Вторые сутки пытаюсь решить задачу получения данных с формы, валидации и ответа сервера клиенту о результатах валидации.
Данные с формы валидируются, по результатам отправляется ответ клиенту:
- Если данные не прошли валидацию, заново рендерятся форма с указанием ошибок валидации;
- Если данные прошли валидацию, ответ что все ок.
$validator = Validator::make($request->all(), [
//правила валидации
]);
if($validator->fails()) {
return redirect('/user-register')
->withErrors($validator)
->withInput();
} else {
return '<h2>OK!</h2>';
}
На клиенте ответ обрабатывается JS скриптом, и в зависимости от результата в модальном окне выводится форма с ошибками валидации или ответ об успешной обработке данных.
spoiler
async function postData(url = '', data = {}) {
const response = await fetch(url, {
method: 'POST',
mode: 'cors',
cache: 'no-cache',
credentials: 'same-origin',
headers: {
'X-CSRF-TOKEN': document.querySelector('meta[name=csrf-token]').content,
'Content-Type': 'application/json'
// 'Content-Type': 'application/x-www-form-urlencoded',
},
redirect: 'follow',
referrerPolicy: 'no-referrer',
body: JSON.stringify(data)
});
return await response.text();
}
function sendRegister(){
const registerForm = document.getElementById('registerForm');//ID формы
document.getElementById('formBtn').addEventListener('click', function (event){
event.preventDefault();
let formData = {
'name': registerForm.querySelector('[name="name"]').value,
'email': registerForm.querySelector('[name="email"]').value,
'password': registerForm.querySelector('[name="password"]').value,
'password_confirmation': registerForm.querySelector('[name="password_confirmation"]').value
}
postData('{{route('user.store')}}', formData)
.then((data) => {
document.querySelector('.fancybox__content').innerHTML = data;
console.log(data);
});
});
};
Не могу сообразить, как можно передать дополнительный параметр об успехе или ошибках валидации данных для обработки js скриптом не клиенте.
Куда смотреть? Буду благодарен за любую подсказку в сособах решения задачи.