我希望更改通过分页显示的项目数量,通过以下路由在 Controller 中指定,以设置分页每个页面上显示的产品数量。
举个例子,如果用户输入http://example.com/first-category?numProducts=99
,他们将看到 View 'pages.category'
每页分页有 99 个项目。我认为我的路线出了问题,但需要一点帮助。
路线:
//First returns single product
Route::get('/products/{cat}/{permalink}', 'ShopController@show')->name('shop.product');
//Second gets all items in category group
Route::get('/products/{cat}', 'ShopController@subIndex')->name('shop.cat');
//Third to pass variable prodNum to ShopController for paginate($prodNum)
Route::get('/products/{cat}?numProducts={prodNum}', 'ShopController@subIndexMore')
ShopController.php
Controller 看起来像这样:
// Shows all items in category, set to 10 items per page via paginate(10)
public function subIndex($cat) {
$category = Category::where('permalink', $cat)->first();
$products = ProductGroup::where('category', $category->id)->orderBy('id', 'asc')->paginate(10);
return view('pages.category',compact('products', 'category'));
}
// Shows all items in category, paginate($prodNum) determines how many items in each page
public function subIndexMore($cat, $prodNum) {
$category = Category::where('permalink', $cat)->first();
$products = ProductGroup::where('category', $category->id)->orderBy('id', 'asc')->paginate($prodNum);
return view('pages.category',compact('products', 'category'));
}
最佳答案
您不需要在路由文件中指定查询字符串参数。您可以将它们作为请求的输入进行访问。
public function subIndex(Request $request, $cat)
{
$num_items = $request->input('numProducts');
$category = Category::where('permalink', $cat)->first();
$products = ProductGroup::where('category', $category->id)->orderBy('id', 'asc')->paginate($num_items);
return view('pages.category',compact('products', 'category'));
}
请记住包括:
use Illuminate\Http\Request;
关于php - 拉拉维尔 : How to specify the number of items in pagination via route variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48749796/