MethodNotAllowedHttpException($ другие); Когда возникают ошибки в валидации (Laravel 5.5)
У меня есть 2 маршрута:
Route::post('/post_2', 'TestController@post_2')
->name('post_2');
Route::post('/result', 'TestController@result')
->name('result');
и TestController, как показано ниже.
public function post_2(){
return view('post_2View');
}
public function result(\App\Http\Requests\Post_2Request $request){
return "Successful";
}
Post_2View
<form action="{{route('result')}}" method="post">
{{ csrf_field() }}
<input type="text" name="checkValidate">
<input type="submit" value="Submit">
</form>
Последнее - это Запрос на проверку ввода checkValidate в Post_2View.
public function rules()
{
return [
'checkValidate'=>'required'
];
}
public function messages() {
return [
'checkValidate.required'=>"This field is required"
];
}
Когда у меня есть данные на входе checkValidate, все работает нормально, но когда файл запроса возвращает ошибки, я вижу ошибку в своем браузере
**
* Throw a method not allowed HTTP exception.
*
* @param array $others
* @return void
*
* @throws \Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
*/
protected function methodNotAllowed(array $others)
{
throw new MethodNotAllowedHttpException($others);
}
Подскажите пожалуйста, как мне это решить. Благодарю.
1 ответ
Поскольку вы не отправляете какие-либо данные /post_2
использование get
вместо глагола post
запрос
Route::get('/post_2', 'TestController@post_2')
->name('post_2');
Или вы можете использовать оба
Route::match(['get', 'post'],'/post_2', 'TestController@post_2')
->name('post_2');
Потому что, когда вы вернетесь после проверки, это запрос на получение
Я не мог найти причину, по которой произошло это исключение, но я нашел решение, если проверка не удалась, не возвращайте MethodNotAllowedHttpException
$validator = Validator::make($request->all(),[
'name' => 'required'
]);
if ($validator->fails()) {
return response()->json(['message'=>'Name field is required'],422);
}