2017-01-23 2 views
0

Ich habe ein Projekt, das mit CodeIgniter gemacht wird, wir wollen PHP für den Server und AngularJS für den Client verwenden. Ich möchte auch den Namen und die ID eines Benutzers in unserer Datenbank einzufügen Dies ist der AngularJS Code:Wie kann ich mit einem CodeIgniter-Controller Daten aus einem AngularJS-Formular in eine Datenbank einfügen?

<!doctype html> 
 
<html> 
 
<head> 
 
    <title>Angular Forms</title> 
 

 
    <!-- LOAD BOOTSTRAP CSS --> 
 
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css"> 
 

 
    <!-- LOAD JQUERY --> 
 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
 
    <!-- LOAD ANGULAR --> 
 
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script> 
 

 
    
 
    <script> 
 
    // define angular module/app 
 
    var formApp = angular.module('formApp', []); 
 
    // create angular controller and pass in $scope and $http 
 
    function formController($scope, $http) { 
 
     // create a blank object to hold our form information 
 
     // $scope will allow this to pass between controller and view 
 
     $scope.formData = {}; 
 
     // process the form 
 
     $scope.processForm = function() { 
 
     $http({ 
 
       method : 'POST', 
 
       url  : 'http://localhost/alpha2/index.php/user/insert', 
 
       data : $.param($scope.formData), // pass in data as strings 
 
       headers : { 'Content-Type': 'application/x-www-form-urlencoded' } // set the headers so angular passing info as form data (not request payload) 
 
      }) 
 
       .success(function(data) { 
 
        console.log(data); 
 
        if (!data.success) { 
 
        // if not successful, bind errors to error variables 
 
         $scope.erroridAlumno = data.errors.idAlumno; 
 
         $scope.errorNombre = data.errors.nombre; 
 
        } else { 
 
        // if successful, bind success message to message 
 
         $scope.message = data.message; 
 
         $scope.erroridAlumno = ''; 
 
         $scope.errorNombre = ''; 
 
        } 
 
       }); 
 
     }; 
 
    } 
 
    </script> 
 
     <style> 
 
      .ng-valid.ng-dirty{ 
 
       border-color: green; 
 
      } 
 
      .ng-invalid.ng-dirty{ 
 
       border-color: red; 
 
      } 
 
     </style> 
 
</head> 
 
<!-- apply the module and controller to our body so angular is applied to that --> 
 
<body ng-app="formApp" ng-controller="formController"> 
 
<div class="container"> 
 
<div class="col-md-6 col-md-offset-3"> 
 

 
    <!-- PAGE TITLE --> 
 
    <div class="page-header"> 
 
    <h1><span class="glyphicon glyphicon-tower"></span> Insertar Nuevo Alumno</h1> 
 
    </div> 
 

 
    <!-- SHOW ERROR/SUCCESS MESSAGES --> 
 
    <div id="messages" class="well" ng-show="message">{{ message }}</div> 
 

 
    <!-- FORM --> 
 
    <form ng-submit="processForm()"> 
 
    <!-- ID --> 
 
    <div id="idAlumno-group" class="form-group" ng-class="{ 'has-error' : erroridAlumno }"> 
 
     <label>ID</label> 
 
     <input type="text" name="idAlumno" class="form-control" placeholder="Bruce Wayne" ng-model="formData.idAlumno"> 
 
         <span class="help-block" ng-show="erroridAlummno">{{ erroridAlumno }}</span> 
 
    </div> 
 

 
    <!-- NAME --> 
 
    <div id="nombre-group" class="form-group" ng-class="{ 'has-error' : errorNombre }"> 
 
     <label>Nombre</label> 
 
     <input type="text" name="nombre" class="form-control" placeholder="Caped Crusader" ng-model="formData.nombre"> 
 
     <span class="help-block" ng-show="errorNombre">{{ errorNombre }}</span> 
 
    </div> 
 

 
    
 

 
    <!-- SUBMIT BUTTON --> 
 
    <button type="submit" class="btn btn-success btn-lg btn-block"> 
 
     <span class="glyphicon glyphicon-flash"></span> Submit! 
 
    </button> 
 
    </form> 
 

 
    <!-- SHOW DATA FROM INPUTS AS THEY ARE BEING TYPED --> 
 
    <pre> 
 
    {{ formData }} 
 
    </pre> 
 

 
</div> 
 
</div> 
 
</body> 
 
</html>

Und in meinem PHP-Projekt, ich habe einen Controller (und ein Modell) namens "Benutzer". Dieser Controller verfügt über drei Methoden: Index, Benutzer und Einfügen. Insert ist die Methode, die ich versuche, damit es funktioniert, die ich verwende, um neue Daten in die Datenbank einzufügen.

Ich denke, dass es ein Problem mit routes.php (im Ordner config) sein kann, weiß ich nicht, was ich dort setzen soll.

Was wäre der richtige Code bei Benutzer/einfügen, um die Daten in die Datenbank einzufügen? Was wäre der korrekte Code für routes.php, damit er funktioniert?

Das Modell der User-Entität heißt "user_model". Diese ist der Code des Modells:

<?php 
 
class User_model extends CI_Model { 
 

 

 

 
     public function __construct() 
 
     { 
 
       $this->load->database(); 
 
     } 
 

 
\t \t public function get_users($id = FALSE) 
 
\t \t { 
 
\t \t   if ($id === FALSE) 
 
\t \t   { 
 
\t \t     $query = $this->db->get('alumno'); 
 
\t \t     return $query->result_array(); 
 
\t \t   } 
 

 
\t \t   $query = $this->db->get_where('alumno', array('idAlumno' => $id)); 
 
\t \t   return $query->row_array(); 
 
\t \t } 
 

 
\t \t public function insert_user($data){ 
 
\t \t \t 
 
     $query = $this->db->insert('alumno',$data); 
 
     return $query; 
 
    } 
 

 
\t \t 
 

 

 
} 
 

 

 
?>

("alumno" ist der Name der Tabelle in meiner Datenbank)

Vielen Dank für Ihre Hilfe.

+0

Zunächst müssen Sie sicherstellen müssen, zu unterstützen, dass Ihre Server-Seite Controller-POST-Anfrage akzeptieren. Schreiben Sie entsprechend Code für routes.php und Controller-Seite. Erhalten Sie Daten von eckigen mit dem Anfrage-Objekt oder $ _POST geschrieben ... ich denke, das ist alles, was Sie brauchen, um mehr zu schreiben – webDev

+0

Die Methode, um Daten bei codeigniter bekommen ist "$ this-> input-> post ('nameOfTheVariable')". Aber ich weiß nicht, wie man den richtigen Code in routes.php und dem Controller schreibt. –

+0

Ist das, was Sie suchen http://stackoverflow.com/questions/29159612/codeignit-how-to-set-a-controller-funktion-zu-be-a-post-route oder direkt REST-Endpunkte mit Codeigniter https : // GitHub.com/chriskacerguis/codeigniter-restserver – webDev

Antwort

0

Wenn Sie bereits codeigniter-restserver verwenden dann müssen Sie Methodennamen entsprechend müssen verschiedene Methoden der HTTP-Anforderung zu unterstützen.

Zum Beispiel: Wenn Sie eine HTTP machen zu /books GET nennen, zum Beispiel, wäre es eine Books#index_get() Methode aufrufe.

ähnlich, in Ihrem Fall müssen Sie Ihre Methodennamen insert_post() in Ihrem Controller, um Ihre POST-Anforderung von Angular AJAX POST zu unterstützen.

in Ihren Benutzer-Controller So muss es eine Methode insert_post() die URL ...../user/insert

Siehe Umgang mit HTTP-Request Handling Request

Verwandte Themen