【问题标题】:Laravel search function crashes after page refreshLaravel 搜索功能在页面刷新后崩溃
【发布时间】:2018-01-21 16:48:54
【问题描述】:

我有followinmg简单的搜索功能

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 无消息

【问题讨论】:

  • 请显示您使用的路线和链接。
  • 你从哪里得到$term变量?!
  • @AlexeyMezenin 更新了问题

标签: php laravel symfony search laravel-5.5


【解决方案1】:

您的表单方法是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 中,并使用户能够链接到搜索结果。

【讨论】:

  • 我认为这很有效,请您添加解释
  • @Hensen 已添加!让我知道这是否有意义。
【解决方案2】:

您尝试使用错误的控制器方法。所以,改变这个:

'uses' => 'SearchController@snippets'

收件人:

'uses' => 'SearchController@search'

【讨论】:

  • 我的错这不是我先复制错误部分的问题
  • @Hensen 好吧,你已经更新了 @posts 方法,它也不是 @search
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
  • 2012-10-23
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
  • 2019-09-19
  • 2017-12-13
相关资源
最近更新 更多