Я отправляю данные из формы. Я хочу проверить этот массив в контроллере и отправить ответ json на вызов ajax. Не могли бы вы помочь мне с этим.
Это мой код функции контроллера, в который я отправляю форму.
public function submit()
{
$data=array(
'user_firstname'=>$_POST['user_firstname'],
'user_lastname'=>$_POST['user_lastname'],
'user_phone'=>$_POST['user_phone'],
'email'=>$_POST['user_email'],
'username'=>$_POST['user_username'],
'password'=>$_POST['user_password'],
);
$validation=validator($_POST);
if ($validation->passes()){
return "Validation passes";
}
else{
return "Validation failed";
}
}
protected function validator(array $data)
{
return Validator::make($data, [
'user_firstname' => 'required|string|max:255',
'user_lastname' => 'required|string|max:255',
'user_phone' => 'required|string|max:15|unique:users',
'email' => 'required|string|email|max:255|unique:users',
'username' => 'required|string|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);
}
Это моя функция javascript.
if (currentTab==2)
{
$.ajax({
url: "register",
type: "post",
headers: {
'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('content')
},
data: {'user_firstname':user_firstname,'user_lastname':user_lastname,'user_phone':user_phone,'user_email':user_email,'user_username':user_username,'user_password':user_password},
success: function(result){
console.info(result);
}
});
}
Я хочу проверить массив и вернуть все ошибки в json, а затем мой валидатор в том же контроллере.
Пожалуйста, предложите мне, есть ли другой способ проверки данных
Проверка проходит все тесты даже с пустым массивом
Я не знаю, в чем проблема, но он проходит все проверочные тесты
Во-первых, вы хотите распечатать все ошибки или что-то еще?
да, я хочу распечатать ошибки
Тогда прочтите мой первый комментарий! Я дал для этого код! Если вы не понимаете, дайте мне знать.
да, но моя проверка не работает правильно
Вы имеете в виду, что он не проверяется, если вы отправляете пустые данные запроса?
нет нет, когда я ввожу существующий идентификатор электронной почты или существующее имя пользователя, он все еще проходит тест и в правилах проверки я написал уникальный
Попробуйте вот так: 'email' => 'required|string|email|max:255|unique:users,email',
он все еще проходит проверку, что-то не так в реализации
или есть другой способ
Попробуйте только это по электронной почте: 'email' => 'required|unique:users,email'
такая же ошибка отображается





Удалите свой код, и вы можете попробовать этот код:
public function submit(Request $request)
{
$error = false;
$result = array();
$responsecode = 200;
$validator = Validator::make($request, [
'user_firstname' => 'required|string|max:255',
'user_lastname' => 'required|string|max:255',
'user_phone' => 'required|string|max:15|unique:users',
'email' => 'required|email|unique:users,email',
'username' => 'required|string|max:255|unique:users,username',
'password' => 'required|string|min:6|confirmed',
]);
if (!empty($request) && !($validator)){
try {
$result = 'Validate!!'; //OR do more your stuff here
}
catch(\Exception $e){
$error = true;
$responsecode = 500;
$result["error_message"] = $e->getMessage();
}
} else {
$error = true;
$responsecode = 400;
$result["error_message"] = "";
if (sizeof($validator->errors()->getMessages()) > 0){
$messages = $validator->errors()->getMessages();
foreach ($messages as $key => $value) {
$result["error_message"] .= $value[0] .' ';
}
}
}
}
Я использовал этот формат каждый раз, попробуйте.
Надеюсь, это поможет вам !!
Большое спасибо, человек работал как шарм, большое спасибо, ты спас мою работу
Рад, что помогло !! :) Это формат / структура кода для сохранения данных и для api с каждым кодом ответа!
Поместите этот код в другую часть:
$error = true; $responsecode = 400; $result["error_message"] = ""; if (sizeof($validator->errors()->getMessages()) > 0){ $messages = $validator->errors()->getMessages(); foreach ($messages as $key => $value) { $result["error_message"] .= $value[0] .' '; } }