Функция поиска Laravel аварийно завершает работу после обновления страницы
У меня есть следующая простая функция поиска
public function search(Request $request)
{
$posts = Post::where('title', 'like', '%'.$request->term.'%')->paginate(10);
return view('posts.search', compact('posts'));
}
Мой Маршрут:
Route::group(['prefix' => 'posts', 'as' => 'posts.'], function () {
Route::post('/search', ['as' => 'posts', 'uses' => 'SearchController@posts']);
});
И мое мнение:
<form action="{{ route('searches.posts') }}" method="post">
{{ csrf_field() }}
<div class="input-field col s6">
<input class="input blue-text text-lighten-3" type="text" name="term">
</div>
<div class="input-field col s6">
<button type="submit">
<i class="material-icons">search</i>
</button>
</div>
</form>
Я вызываю эту функцию после отправки и получаю новое представление со всеми элементами, связанными с поиском. Пока это работает, но если я сейчас обновлю страницу, Я получу следующую ошибку:
Symfony Component HttpKernel Exception MethodNotAllowedHttpException No message
2 ответа:
Ваш метод формы -
post
, поэтому по вашему первоначальному запросу метод HTTP-POST. При обновлении страницы браузер делает запрос GET, а не POST.Убедитесь, что ваш маршрут зарегистрирован для запросов GET и POST:
Route::match(['get', 'post'], '/search', ['as' => 'posts', 'uses' => 'SearchController@search']);
Https://laravel.com/docs/5.5/routing#basic-routing
Вы также можете рассмотреть возможность простого переключения метода формы на
get
. Это приведет к появлению параметров поиска в URL-адресе и позволит пользователям ссылаться на поисковые результаты.