2017-01-23 6 views
0

У меня есть проект, который выполняется с помощью CodeIgniter, мы хотим использовать PHP для сервера и AngularJS для клиента. Я хочу также, чтобы вставить имя и идентификатор пользователя в нашу базу данных Это код AngularJS:Как я могу вставить данные из формы AngularJS в базу данных с помощью контроллера CodeIgniter?

<!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 проекта, у меня есть контроллер (и модель) с именем «Пользователь». Этот контроллер имеет три метода: Индекс, Пользователи и Вставка. Вставка - это метод, с помощью которого я пытаюсь заставить его работать, тот, который я использую для вставки новых данных в базу данных.

Я думаю, что это может быть проблема с route.php (в папке config), я не знаю, что туда положить.

Что будет правильным кодом в User/insert для вставки данных в базу данных? Что будет правильным кодом для 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. Поэтому напишите код для route.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

Если вы уже используете CodeIgniter-restserver, то вам необходимо иметь имя метода, соответственно, для поддержки различных методов запроса HTTP .

Например: Если вы делаете HTTP-GET позвонить в /books, например, было бы вызвать метод Books#index_get().

Аналогично, в вашем случае вашего имя метода должно быть insert_post() в контроллере для поддержки запроса POST от Angular AJAX POST.

Таким образом, в вашем пользователя контроллера должен быть метод insert_post() для поддержки URL-адрес ...../user/insert

см Обработка запроса HTTP Handling Request

 Смежные вопросы

  • Нет связанных вопросов^_^