Подскажите, как в Laravel сделать route как тут:
https://jsonplaceholder.typicode.com/comments?_page=3&_limit=2
Можно обратиться и без _limit=2
и без ?_page=3&_limit=2
Код, как я сделал:
Route::get('/articles/_page={currentPage?}&_limit={limit?}', "Controller");
Пробывал вот так:
/articles?_page={currentPage?}&_limit={limit?}
.
Да и другими разными способами, не знаю как объявить эту вторую часть как не обяз. параметр
При /api/articles...
не обращается.
Маршрут для пагинации articles
может быть один, все остальное (page, limit) отлавливаете через request()
с обязательной валидацией:
// routes\api.php
Route::group(['prefix' => 'v1', 'namespace' => 'V1', 'middleware' => 'auth:api'], function() {
Route::get('/articles', 'ArticlesController@index');
});
Пишите scope для модели, можете в трейт вынести:
public function scopeAdvancedFilter($query)
{
$data = $this->validateAdvancedFilter(request()->all());
return $query->paginate($data['limit']);
}
protected function validateAdvancedFilter(array $request)
{
$request['limit'] = $request['limit'] ?? 15;
$validator = validator()->make($request, [
'limit' => 'sometimes|required|integer|min:5',
'page' => 'sometimes|required|integer|min:1',
]);
return $validator->validate();
}
В контроллере:
namespace App\Http\Controllers\Api\V1;
use Illuminate\Http\Response;
...
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$articles = Article::with([
'categories:categories.id,categories.title,categories.slug',
'user:users.id,users.name',
])
->advancedFilter();
$collection = ArticleResource::collection($articles);
return $collection->response()
->setStatusCode(Response::HTTP_PARTIAL_CONTENT);
}
...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Мне нужно выполнять php скрипт несколько раз, количество рандомно генеритсяВставляю то что нужно циклично выполнять в цикл for, но код почему-то...
Всем здрастеЕсть новая задачка, и снова со звездочкой
Есть приватный канал, в котором числиться мой основной телеграм аккаунт, я хочу сделать пересылку сообщений из этого канала, в другой канал,...