【问题标题】:Laravel 5.6 Search Pagination giving error "Sorry the page cannot be found on page 2"Laravel 5.6 搜索分页给出错误“抱歉页面在第 2 页上找不到”
【发布时间】:2018-06-20 04:36:41
【问题描述】:

我是 Laravel 搜索功能和分页的新手。我正在使用 Laravel 5.6 并具有搜索功能。

控制器代码

public function search()
    {
    $users = User::whereRole_id(1)->where(function($query) {
                $q = Input::get ( 'q' );
                return $query->where ( 'name', 'LIKE', '%' . $q . '%' )->orWhere ( 'email', 'LIKE', '%' . $q . '%' )->orWhere ( 'phone', 'LIKE', '%' . $q . '%');
        })->paginate(8)->setPath('');
        $pagination = $users->appends ( array ('q' => Input::get ( 'q' ) ) );
                if (count($users) > 0){
                    return view( 'admin.users.index',compact('users'));
                }else{
                    $q = Input::get ( 'q' );
                    Session::flash('Nosearch',"No Details found with $q .Try to search again !");
                    return view( 'admin.users.index',compact('users'));
            }
    }

我的查看代码:

我正在使用 {{$users->links()}} 来显示链接,当我查看源代码时,它会给出正确的参数以及这样的页码:

<li class="page-item active" aria-current="page"><span class="page-link">1</span</li><li class="page-item"><a class="page-link" href="?q=abc&amp;page=2">2</a></li>

路线代码:

Route::group([
    'as'=>'admin.',
    'prefix' => 'admin',
    'middleware' => 'admin'
], function() {
    Route::post('/users/search', 'AdminUsersController@search');
}

当我点击下一页时,它给了我如下错误 Page Not Found Error

请帮帮我,我哪里出错了?谢谢,帕拉克

【问题讨论】:

  • 当您遇到页面未找到时,查看浏览器的地址栏显示什么?
  • Ruman - 浏览器栏显示此链接“ssapp/admin/users/search?q=abc&page=2”,这对我来说是正确的。
  • 请按照您的路线文件中出现的顺序显示您的其他路线。
  • 对不起,这里是我的路线请:Route::group([ 'as'=>'admin.', 'prefix' => 'admin', 'middleware' => 'admin' ] , function() { Route::resource('users', 'AdminUsersController'); Route::post('/users/search', 'AdminUsersController@search'); Route::get('/users/export/{ type}', 'AdminUsersController@export'); Route::get('transactions/index', 'AdminTransactionsController@index')->name('transactions.index'); Route::post('/transactions/search' , 'AdminTransactionsController@search'); Route::get('/transactions/export/{type}', 'AdminTransactionsController@export'); });
  • 好的!我会更新我的答案。

标签: search laravel-5.6 laravel-pagination


【解决方案1】:

将您的资源路线移到最后。你得到一个 404,因为你的 uri users/search 匹配 show 资源路由,即 users/{user},其中 laravel 试图找到一个用户 id 为“search”的用户,但它没有找到,所以它给出了一个带有 @ 的 ModelNotFoundException 987654325@.

您应该重新排序您的路线,并将您的搜索路线设为GET 路线,否则下一页链接将始终使用GET 请求方法点击uri users/{user},这将再次导致上述情况.

Route::group([
    'as'=>'admin.',
    'prefix' => 'admin',
    'middleware' => 'admin'
], function() {
//Note that it is now a get method
    Route::get('/users/search', 'AdminUsersController@search');
    Route::get('/users/export/{type}', 'AdminUsersController@export');
//Moved your resource route to the end of `users` uri. 
Route::resource('users', 'AdminUsersController');
 Route::get('transactions/index', 'AdminTransactionsController@index')->name('transactions.index');
 Route::post('/transactions/search', 'AdminTransactionsController@search');
 Route::get('/transactions/export/{type}', 'AdminTransactionsController@export');

});

【讨论】:

  • 鲁曼,感谢您的回复。我这样做了,但它仍然给我同样的错误。
  • 哦..你知道你应该使用什么get。因为当点击分页器的下一个按钮时,它是一个获取请求。另外,建议只使用get request进行搜索
  • 太棒了!非常感谢鲁曼。现在解决了。你让我今天一整天都感觉很好!!!非常感谢!我在这个问题上苦苦挣扎了 2 天。
  • 我需要在堆栈溢出的任何地方关闭这个问题吗?请告知我对使用此网站还很陌生。
  • 不,你不知道。如果解决方案有效,则将答案标记为选中。你就完成了。
【解决方案2】:
Route::group([
    'as'=>'admin.',
    'prefix' => 'admin',
    'middleware' => 'admin'
], function() {
    Route::post('/users/search', 'AdminUsersController@search');
    Route::get('/users/export/{type}', 'AdminUsersController@export');
    Route::resource('users', 'AdminUsersController');
    Route::get('transactions/index', 'AdminTransactionsController@index')->name('transactions.index');
    Route::post('/transactions/search', 'AdminTransactionsController@search');
    Route::get('/transactions/export/{type}', 'AdminTransactionsController@export');
});

I have pasted the image for reference 我要去这个网址:http://ssapp/admin/users/search?q=user1&page=2

问候, 帕拉克

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-06
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    相关资源
    最近更新 更多