Laravel Validation - Правило, запрещающее параметры запроса - PullRequest
4 голосов
/ 23 мая 2019

В моем приложении Laravel 5.8 у меня есть много API-маршрутов, которые возвращают постраничные результаты. Если я сделаю запрос к своему API, добавив следующую строку запроса, я могу отключить нумерацию страниц.

http://api.test/users/?no_paginate=1

У меня вопрос ... как я могу отключить no_paginate от использования на определенных маршрутах? Я бы предпочел, чтобы некоторая проверка прошла в классе запроса, но я не могу найти ничего в документах для этого.

Ответы [ 2 ]

6 голосов
/ 23 мая 2019

Это можно сделать с помощью Global Middleware .

Сначала настройте промежуточное ПО для работы на всех маршрутах:

// routes.php
$app->middleware([
    App\Http\Middleware\DisableNoPaginate::class
]);

Затем определите, что промежуточное программное обеспечение должно делать:

// src/App/Http/Middleware/DisableNoPaginate.php
<?php
namespace App\Http\Middleware;

use Closure;

class DisableNoPaginate
{
    public function handle($request, Closure $next)
    {
        //remove no_paginate param from request object
        unset($request['no_paginate']);

        return $next($request);
    }
}
2 голосов
/ 23 мая 2019

Для наилучшего подхода к поиску пользователей либо выполните разбиение на страницы, либо получите весь список по приведенному ниже коду в 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']);

Здесь URL будет

http://api.test/users/paginate // get pagination response.
http://api.test/users          // get response without response

Я думаю, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...