5

Ich erstelle eine Website mit Codeigniter 3 und AngularJs. Während delevolping habe ich einige Probleme mit der Basis-URL in codeigniter konfrontiert. Ich füge eine Bilddatei meiner Verzeichnisstruktur hinzu.AngularJS Codeigniter base_url Pfadeinstellungen

enter image description here

In meinem main (views/home.php) habe ich eine ng-Ansicht für verschiedene Seiten zu laden. Hier verwende ich angularjs ngRoute für das Routing.

Hier ist mein Code.

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" 
    }); 
}); 

Innerhalb dieses mainpage.php Ich bin Auflistung einige Profilinhalte (Dummy-Inhalte), die (Daten/data.json) innerhalb einer JSON-Datei residiert. Und alle Inhalte wurden aufgelistet. Und innerhalb dieser Auflistung platziert i eine Schaltfläche mit ng Klick = "myName"

Hier ist der Code:

<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> 

Alle meine js Code wurden in app.js wriiten (Aktiva/js/app.js) einschließlich Angular Js. In dieser js Datei habe ich eine base_url Variable eingerichtet wie in codeigniter config.php Datei

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

innen app.js

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

Wenn ich mit auf meine Schaltfläche klicken ng-Klick = "myName" Ich möchte einen Controller (Codeigniter Controller) erhalten und ausführen möchten eine Funktion in diesem Controller. Hier benutze ich auth.php (controllers/auth.php) und Funktionsname als functionOne();

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

Für diesen iam mit $ hhtp.post und var base_url für Pfad. Aber ich habe diese Ausgabe nicht erhalten und es wird nicht an diesen Controller übergeben.

 myApp.controller('ListController', ['$scope', '$http', 'settings', function($scope, $http) { 

       $http.get('application/datas/data.json').success(function(data) { 
        $scope.artists = data; 
       }); 

       $scope.myName = function() { 
        alert("hai1"); 
        /**/ 
        $http.post(base_url + 'auth/functionOne').success(function(response) { 
         $scope.data = response 
         console.log($scope.data); 
         alert($scope.data); 
        }); 

       } 

      }]); 

ng-click = Funktion "meinName" funktioniert gut. Es wird aber nicht an die Funktion functionOne in diesem Controller auth.php übergeben. Ich denke, das Problem ist wahrscheinlich mit dem Pfad base_url. Wenn jemand weiß, dass diese PLZ mir helfen, dieses Problem zu lösen.

+0

kann es etwas mit $ config zu tun haben ['csrf_protection'] = TRUE; was Sie in der codeigniter Konfigurationsdatei finden – gianni

+0

Danke für Ihren Kommentar. Ich habe versucht, aber nicht funktioniert. – Raj

Antwort

0

Nun, ich weiß nicht, dies wird Ihnen helfen, aber das ist, wie ich es tue:

Ich habe diese Funktion in einem Dienst:

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' } 
     }); 
    } 

wenn Ihr csrfToken aktiv ist in codeigniter config müssen Sie es in Ihrem Formular als verstecktes Feld eingeben. Außerdem müssen Sie den Inhaltstyp in den Kopfzeilen festlegen.