Я работаю с laravel И у меня есть модальная загрузка, я хочу, чтобы поля были обязательными. Я попробовал этот required в своем теге ввода и текстовом поле, и он не работал. Я попытался проверить поля в контроллере, но это не сработает, я знаю, что что-то не так в том, что я делаю. Я просто новичок в Laravel. Помоги мне
это мой модальный
<div class = "modal fade" id = "exampleModalCenter" tabindex = "-1" role = "dialog"
aria-labelledby = "exampleModalCenterTitle" aria-hidden = "true">
<div class = "modal-dialog modal-dialog-centered" role = "document">
<div class = "modal-content">
<div class = "modal-header info-color white-text">
<h4 class = "title">
<i class = "fa fa-pencil"></i> New Message</h4>
<button type = "button" class = "close waves-effect waves-light" data-dismiss = "modal" aria-label = "Close">
<span aria-hidden = "true">×</span>
</button>
</div>
<div class = "modal-body">
<label for = "defaultFormEmailModalEx">Recipient</label>
<input type = "email" name = "recipient" id = "defaultFormEmailModalEx" class = "form-control form-control-sm" autocomplete = "off" v-model = "recipient">
<br>
<label for = "defaultFormMessageModalEx">Your message</label>
<textarea type = "text" name = "newmessage" id = "defaultFormMessageModalEx" class = "md-textarea form-control" v-model = "newMessage"></textarea>
<div class = "text-center mt-4 mb-2">
<button class = "btn btn-info" @click = "sendNewMessage">Send
<i class = "fa fa-send ml-2"></i>
</button>
</div>
</div>
</div>
</div>
это то, что делают @click = "sendNewMessage"
sendNewMessage(){
axios.post('http://localhost/sendnewmsg', {
recipient: this.recipient,
newMessage: this.newMessage
})
.then( (response) => {
console.info(response.data);
/*if (response.status===200){
app.messages = response.data;
app.privateMsg = response.data;
}*/
})
.catch(function (error) {
console.info(error);
});
this.recipient='';
this.newMessage='';
},
и это контроллер, я думаю, здесь нужно поставить проверку
public function sendnewmessage(Request $request){
$recipient = $request->recipient;
$newmessage = $request->newMessage;
$checkUser = DB::table('users')->where('email','=', $recipient)->get();
if ($checkUser->isEmpty()){
echo 'data doesnt exist';
}
else{
echo 'data exist';
}
}






Вы можете передать ручные валидаторы в своей функции sendnewmessage,
Пожалуйста, проверьте приведенный ниже код.
public function sendnewmessage(Request $request){
$validator = \Validator::make($request->all(), [
'recipient' => 'required',
'newMessage' => 'required',
]);
if ($validator->fails())
{
return response()->json(['errors'=>$validator->errors()->all()]);
}
$recipient = $request->recipient;
$newmessage = $request->newMessage;
$checkUser = DB::table('users')->where('email','=', $recipient)->get();
if ($checkUser->isEmpty()){
echo 'data doesnt exist';
}
else {
echo 'data exist';
}
}
И если вы хотите показать ошибки на своем модальном, вы можете написать это в своем модальном
@if ($errors->any())
<div class = "alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Надеюсь, это поможет вам прокомментировать, если у вас есть какие-либо вопросы.
У меня есть переменные ошибки, и я вижу их в своей консоли, но не могу отобразить их в поле зрения
хорошо .. я думаю, что вы не использовали форму внутри модального окна начальной загрузки, вот в чем проблема.
хорошо, где мне нужно поместить ошибку внутри формы или снаружи? Я помещаю форму, и она закрывает модальное окно, почему
Позвольте нам продолжить обсуждение в чате.
Вот что ты хочешь ...
$this->validate($request, [
'recipient' => 'required',
'newmessage' => 'required',
]);
Вот документ для проверки laravel
А чтобы отображать сообщения об ошибках в js, вы можете получить ошибки и сохранить их в переменной
let $errors = response.responseJSON;
Ну, вы просто сохранили его в переменной, вы можете легко выполнить цикл через foreach и добавить его в форму или что-то еще, что вам больше нравится.
Кстати, вы используете ajax и пытаетесь отображать сообщения об ошибках на php, что невозможно, вы должны выполнить его с помощью js ...
вы использовали мой код
return response()->json(['errors'=>$validator->errors()->all()]);?