2017-01-23 69 views
0

我有一个使用CodeIgniter制作的项目,我们希望使用PHP作为服务器,而AngularJS作为客户端。我想太多插入名称和用户到我们的数据库 的ID这是AngularJS代码:如何使用CodeIgniter控制器将数据从AngularJS表单插入到数据库中?

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

而在我的PHP项目,我有一个控制器(和模型)名为“用户”。 该控制器有三种方法:索引,用户和插入。 插入是我试图使它工作的方法,我用来将新数据插入到数据库中的方法。

我认为这可能是与routes.php(在config文件夹)的问题,我不知道该放什么。

用户/插入将数据插入数据库的正确代码是什么? route.php的正确代码是什么?

用户实体的模型名为“user_model”。 这是模型的代码:

<?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” 是表的名字在我的数据库)

谢谢您的帮助。

+0

首先,你必须确保你的服务器端控制器接受POST请求。因此,相应地为routes.php和控制器端编写代码。获取从角度使用请求对象或$ _POST发布的数据...我认为这就是所有你需要编写的更多 – webDev

+0

在codeigniter上获取发布数据的方法是“$ this-> input-> post('nameOfTheVariable')”。但我不知道如何在routes.php和控制器中编写正确的代码。 –

+0

这是你正在寻找http://stackoverflow.com/questions/29159612/codeigniter-how-to-set-a-controller-function-to-be-a-post-route或直接REST端点与codeigniter https :// github上。com/chriskacerguis/codeigniter-restserver – webDev

回答

0

如果您已经使用笨,restserver那么你需要有方法的名称相应支持HTTP请求不同的方法。

例如: 如果你正在做一个HTTP GET调用以/books,例如,它会召唤Books#index_get()方法。

同样,你的情况你的方法名称必须是insert_post()在您的控制器从角AJAX POST支持你的POST请求。

所以,在你的用户控制器必须有一个方法insert_post()支持URL ...../user/insert

请参见处理HTTP请求Handling Request

相关问题