Сначала переместите ошибки в верхнюю часть формы, чтобы вы могли их видеть.
<form action="/contact/submit" method="POST">
@csrf
@if($errors->any())
<div class="notification is-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
</div>
@endif
Лучший способ обработки проверки состоит в том, чтобы отделить ее с помощью запроса формы.
php artisan make:request SendMessageRequest
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class SendMessageRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'name' => 'required|min:2',
'email' => 'required|max:255',
'phonenumber' => 'required|min:10|max:10',
'message' => 'required|min:5',
];
}
}
Если проверка не пройдена, будет автоматически сгенерирован ответ на перенаправление, чтобы отправить пользователя обратно на прежнее место.
Теперь обновите ваш контроллер.
namespace App\Http\Controllers;
use App\Http\Requests\SendMessageRequest;
use App\Message;
class MessagesController extends Controller
{
public function submit(SendMessageRequest $request)
{
Message::create($request->validated());
return redirect('/')->with('success', 'Your message has been
successfully sent. We will reach out to you soon');
}
}
Или вы можете оставить проверку в вашем контроллере, используя перенаправление Validator
и back()
, но первый способ - лучший.
public function submit(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|min:2',
'email' => 'required|max:255',
'phonenumber' => 'required|min:10|max:10',
'message' => 'required|min:5',
]);
if ($validator->fails()) {
return back()->withInput()->withErrors($validator);
}
Message::create($request->all());
return redirect('/')->with('success', 'Your message has been
successfully sent. We will reach out to you soon');
}