簡體   English   中英

Laravel搜索功能在頁面刷新后崩潰

[英]Laravel search function crashes after page refresh

我遵循簡單的搜索功能

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沒有消息

您的表單方法是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中,並使用戶能夠鏈接到搜索結果。

您正在嘗試使用錯誤的控制器方法。 所以,改變這個:

'uses' => 'SearchController@snippets'

至:

'uses' => 'SearchController@search'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM