在我的Laravel 5.8应用程序中,我有许多API路由返回分页结果。如果我向我的API请求附加了以下查询字符串,则可以禁用分页。
http://api.test/users/?no_paginate=1
我的问题是...如何禁止 no_paginate 在某些路线上使用?我希望希望在请求类中进行一些验证,但是为此我无法在docs中找到任何内容。
答案 0 :(得分:6)
您可以使用Global Middleware进行此操作。
首先安排中间件在所有路径上运行:
{
Object.keys(peripherals).map(key => peripherals[key]).map(
peripheral => (
<Peripheral
key={peripheral.id}
peripheral={peripheral}
onConnect={onConnect}
connected={false}
retrieved = {false}
/>
)
)
}
然后定义中间件应该做什么:
// routes.php
$app->middleware([
App\Http\Middleware\DisableNoPaginate::class
]);
答案 1 :(得分:2)
有关通过UsersController
中的以下代码获得用户分页或获得所有列表的最佳方法
public function index($type = null, Request $request)
{
$builder = User::where(/*query*/);
if($type == "paginate") {
$items = $builder->paginate(10);
} else {
$items = $builder->get();
}
return view("users.index", ['users' => $items]);
}
这是web.php / api.php文件中的路由
Route::get('/{type?}', ['as' => 'users.index', 'uses' => 'UsersController@index']);
此处的网址为
http://api.test/users/paginate // get pagination response.
http://api.test/users // get response without response
我认为这会对您有所帮助。