搜索结果的分页 laravel 5.3

新手上路,请多包涵

分页搜索结果

我刚开始使用 Laravel,我正在尝试使用适当的分页创建搜索功能。该功能适用于第一页,但不适用于第二页。我认为它不会将结果提供给下一页,但我似乎找不到答案。


这是我在 IndexController 中的搜索功能:

 public function search()
{
    $q = Input::get('search');

    # going to next page is not working yet
    $product = Product::where('naam', 'LIKE', '%' . $q . '%')
        ->orWhere('beschrijving', 'LIKE', '%' . $q . '%')
        ->paginate(6);

    return view('pages.index', compact('product'));
}

这是我的路线:

 Route::post('search{page?}', 'IndexController@search');

这是第二页的网址:

 /search?page=2

这就是我显示分页的方式:

 {{ $product->appends(Request::get('page'))->links()}}

错误:

 MethodNotAllowedHttpException in RouteCollection.php line 218:

根据要求获取错误。

路线:

 Route::get('search/{page?}', 'IndexController@search');

错误:

 MethodNotAllowedHttpException in RouteCollection.php line 218:
in RouteCollection.php line 218
at RouteCollection->methodNotAllowed(array('GET', 'HEAD')) in RouteCollection.php line 205
at RouteCollection->getRouteForMethods(object(Request), array('GET', 'HEAD')) in RouteCollection.php line 158
at RouteCollection->match(object(Request)) in Router.php line 780
at Router->findRoute(object(Request)) in Router.php line 610
at Router->dispatchToRoute(object(Request)) in Router.php line 596
at Router->dispatch(object(Request)) in Kernel.php line 267
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104
at Pipeline->then(object(Closure)) in Kernel.php line 149
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 116
at Kernel->handle(object(Request)) in index.php line 53

我希望我的问题很清楚并且格式正确。提前谢谢你(抱歉我的英语不好)


回答:

我最终结合这篇文章的一些帮助使用了 这篇 文章的答案

我为初始搜索使用了一个 post 函数,为后续页面使用了一个 get 函数。这是可能的,因为我现在正在搜索 URL。


编辑:

  • 添加了初始错误。
  • 添加了 Route::get 错误
  • 添加答案

原文由 Casper Spruit 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 269
2 个回答

如果你想将过滤器应用于下一页,你应该像这样将它们添加到你的分页器中:

 $product = Product::where('naam', 'LIKE', '%' . $q . '%')
        ->orWhere('beschrijving', 'LIKE', '%' . $q . '%')
        ->paginate(6);
$product->appends(['search' => $q]);

并将您的路线从邮寄更改为:

 Route::get('search', 'IndexController@search');

原文由 Andrej 发布,翻译遵循 CC BY-SA 3.0 许可协议

快速查看方式(Lavarel 5.7)

 $product->appends(Request::all())->links();

原文由 ytdm 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏