Я искал по всему Интернету, как формировать данные проверки, отправленные запросом Angular js $http
POST в codeigniter.
Для ясного понимания я разместил полные данные HTML. Я считаю, что большинство разработчиков ищут это решение.
Вот моя HTML-форма:
<!DOCTYPE html>
<html>
<head>
<style>
input[type="text"].ng-invalid{border: 1px solid red; }
</style>
</head>
<body ng-app="app" ng-controller="ctrl">
<form name="test_form" ng-submit="send_data()">
<input type="text" name="email" ng-model="email">
<span ng-show="test_form.email.$invalid - required">Required</span>
<input type="password" name="password" ng-model="password">
<span ng-show="test_form.email.$invalid - required">Required</span>
<button type="submit">Submit</button>
</form>
<script src="<?php echo base_url('assets/angular/angular.min.js'); ?>" type="text/javascript">
</script>
<script>
angular.module('app', [])
.controller('ctrl', function ($scope, $http) {
$scope.send_data = function () {
$http({
method: "POST",
url: "<?php echo base_url('login/test_angular_validate'); ?>",
data: {email: $scope.email, password: $scope.password},
headers : {'Content-Type': 'application/x-www-form-urlencoded'}
}).then(function (success) {
console.log(success);
}, function (error) {
})
}
});
</script>
</body>
</html>
Функция контроллера входа в систему Codeigniter
<?php
public function test_angular_validate() {
$form_data = json_decode(file_get_contents("php://input"), true);
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('email', 'email', 'required|min_length[3]');
$this->form_validation->set_rules('password', 'password', 'required');
if ($this->form_validation->run() == FALSE) {
echo 'failed';
print_r(validation_errors());
} else {
echo 'success';
}
}
?>
Когда отправляются данные формы html с использованием углового запроса $http
POST, я не могу проверить эти данные с помощью библиотеки проверки формы codeigniter. Выдает ошибку проверки, как показано на этом изображении.
$_POST['email']
и$_POST['password']
, которые должны быть установлены, прежде чем вы сможете использовать проверку формы codeigniter. Я советую вам написать вспомогательную функцию codeigniter для преобразования данных json в значения массива $_POST... сначала код, чтобы убедиться, что$_POST['email'] = '[email protected]'; $_POST['password'] = 'password';
перед загрузкой помощника формы - person Raymond Nijland   schedule 18.02.2018