Функция поиска 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 \Компонент \ HttpKernel \Исключение \ Исключение MethodNotAllowedHttpException Нет сообщения

Author: Hensen, 2018-01-21

2 answers

Ваш метод формы 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-адресе и позволит пользователям ссылка на результаты поиска.

 1
Author: Mathew Tinsley, 2018-01-21 17:37:29

Вы пытаетесь использовать неправильный метод контроллера. Итак, измените это:

'uses' => 'SearchController@snippets'

Кому:

'uses' => 'SearchController@search'
 1
Author: Alexey Mezenin, 2018-01-21 16:58:42