У меня есть проект, который выполняется с помощью 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" это имя таблицы в моей базе данных)
Спасибо за вашу помощь.
Прежде всего вы должны убедиться, что ваш серверный контроллер принимает запрос POST. Поэтому напишите код для route.php и стороны контроллера соответственно. Получите данные, отправленные с помощью углового, используя объект запроса или $ _POST ... Я думаю, что все, что вам нужно написать больше – webDev
Метод для получения опубликованных данных на codeigniter - это $ this-> input-> post ('nameOfTheVariable') ". Но я не знаю, как написать правильный код в routes.php и контроллере. –
Это то, что вы ищете 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