5

Tworzę stronę internetową z Codeigniter 3 i AngularJs. Podczas delevolping napotkałem pewne problemy z bazowego adresu URL w codeigniter. Im dołączam plik obrazu z mojej listy katalogów.AngularJS Codeigniter ustawienia ścieżki_url

enter image description here

W moim tytułowa (Views/Home.php) i umieścić NG-view ładowania różnych stron. Tutaj używam angularjs ngRoute do routingu.

Oto mój kod.

var myApp = angular.module("myApp",["ui.bootstrap","ui.router","ngRoute"]); 
myApp.config(function($routeProvider) { 
    $routeProvider 
    .when("/", { 
    templateUrl : "application/pages/mainpage.php" 
    }) 
    .when("/about", { 
    templateUrl : "application/pages/about.html" 
    }) 
    .when("/services", { 
    templateUrl : "application/pages/services.html" 
    }) 
    .otherwise("/",{ 
    templateUrl: "application/pages/mainpage.php" 
    }); 
}); 

Wewnątrz tej mainpage.php jestem wymieniając niektóre zawartość profili (atrapa treści), który przebywa wewnątrz pliku json (dane osobowe/data.json). I wszystkie treści były na liście. I wewnątrz szczegóły umieściłem przycisk z ng-click = "MyName"

Oto kod:

<div class="container" ng-controller="ListController"> 

<div class="row"> 
    <div class="col-lg-12 text-center"> 
     <h1>Starter Template</h1> 
     <p class="lead">Complete with pre-defined file paths that you won't have to change</p> 

     <div class="row"> 
      <div class="col-sm-6 col-md-4 wow zoomIn" data-wow-delay="0.5s" ng-repeat="items in artists"> 
       <div class="thumbnail"> 
        <img ng-src="{{settings.base_url}}/application/assets/images/profile/{{items.shortname}}.jpg" alt="..."> 

        <div class="caption"> 
         <h3>{{items.name}}</h3> 
         <p>{{items.bio}}</p> 
         <p><a href="javascrip:void(0);" class="btn btn-primary" ng-click="myName()" role="button">Button</a> <a href="#" class="btn btn-default" role="button">Button</a></p> 
        </div> 
       </div> 
      </div> 


     </div> 
    </div> 
    </div> 

    <!-- /.row --> 
</div> 

Całe kod js zostały wriiten w app.js (aktywa/js/app.js) w tym Angular Js. W tym pliku js ustawiam zmienną base_url taką samą, jak w pliku codeigniter config.php

$ config ['base_url'] = 'http://localhost/AngularExPack/Angular_Bootstrap_CI_1/';

wewnątrz app.js

var base_url = 'http://localhost/AngularExPack/Angular_Bootstrap_CI_1/'

Po kliknięciu na przycisk z moim ng-click = "mojanazwa" Chcę, aby uzyskać sterownik (regulator CodeIgniter) i chcesz wykonać funkcja wewnątrz tego kontrolera. Tutaj używam auth.php (controllers/auth.php) i nazwa funkcji jako functionOne();

public function functionOne() 
    { 
     /*$this->load->view('home1');*/ 
     echo "hai"; 
    } 

W tym przypadku za pomocą $ hhtp.post i var base_url dla ścieżki. Ale nie dostałem tego wyniku i nie przekazałem tego kontrolera.

ng-click = "Funkcja myName" działa poprawnie. Ale to nie przechodzi do funkcji functionOne w tym sterowniku auth.php. Myślę, że problem jest prawdopodobnie ze ścieżką base_url. Jeśli ktoś wie, ten plz pomoże mi rozwiązać ten problem.

+0

może mieć coś wspólnego z $ config ['csrf_protection'] = TRUE; który znajduje się w pliku konfiguracyjnym codeigniter – gianni

+0

Dzięki za komentarz ur. Próbowałem, ale nie działałem. – Raj

Odpowiedz

0

Cóż, nie wiem, że to pomoże, ale to jest, jak ja to robię:

mam tej funkcji w serwisie:

saveFunction: function(obj, user, securityToken){ 
      return $http({ 
      method: 'POST', 
      url: 'index.php/controller/saveFUnction', 
      data: $.param({ 
       postID: obj.id , 
       csrfTokenName: securityToken, 
       postName: obj.name, 
       ..... 
       userID: user.id     
      }), 
      headers: { 'Content-Type': 'application/x-www-form-urlencoded' } 
     }); 
    } 

jeśli csrfToken jest aktywny w konfiguracji codeigniter musisz przekazać go w formularzu, jako pole typu ukrytego. Musisz również ustawić typ zawartości w nagłówkach.