Проверка параметров строки запроса Laravel 5.2 - PullRequest
0 голосов
/ 06 июня 2018

В настоящее время я работаю над небольшим проектом, чтобы научиться проверять правильность Laravel и столкнулся с проблемойКонечная точка API - api/test/schoolbook?start=, а моя проверка - 'start' => ['date_format:Y-m-d H:i:s']

Хотя это работает как брелок и сортирует учебники по начальному году, я думаю, что моя проверка имеет некоторую ошибку.Это проверяет, если начало равно определенному формату даты, все хорошо.но если я сейчас проанализирую только ?start= без чего-либо, оно все равно проходит, но не выдает сообщение об ошибке (просто возвращает все без сортировки)

Есть ли способ, которым я могу проверить это лучше ипредотвратить параметр строки запроса, чтобы быть пустым?

Если start не передан, он должен вернуть все записи, поэтому я не могу сделать это действительно необходимым.Таким образом, сценарии таковы:

?start=date передается в правильном формате и возвращает все учебники к прошедшей дате, ?start=date не передается и возвращает все записи в базе данных ?start= также должен возвращать'должно быть в проверке формата даты'

Спасибо!

Контроллер:

    public function findSchoolbook(
         SchoolBookRequest $request,
    ) : JsonResponse {

    $schoolbook = $this->schoolkbool->sort($paramBag);
        $response = $this->transformer()->paginator($schoolbook);

    return $this->response($response);
}

Используемый мной метод ParamBg

private function getParamBag(SchoolBookRequest $request) : ParamBag
{
    return ParamBag::create()
        ->setPage($request->get('page'))
        ->setPerPage($request->get('per_page'))
        ->setStartDate($request->get('start_at'))
}

Запрос

  class SchoolBookRequest extends Request
{
    public function rules() : array
    {
         return [
             'start_at' => ['date_format:Y-m-d H:i:s']
        ];
    }
}

1 Ответ

0 голосов
/ 06 июня 2018

Это должно фильтровать только по дате начала, когда присутствует в запросе:

private function getParamBag(SchoolBookRequest $request) : ParamBag
{
    $parambag = ParamBag::create()
        ->setPage($request->get('page'))
        ->setPerPage($request->get('per_page'))

    if ($request->has('start_at')) {
         $parambag = $parambag->setStartDate($request->get('start_at'));
    }

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