Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.2查询字符串参数验证_Php_Laravel_Validation_Laravel 5 - Fatal编程技术网

Php Laravel 5.2查询字符串参数验证

Php Laravel 5.2查询字符串参数验证,php,laravel,validation,laravel-5,Php,Laravel,Validation,Laravel 5,我目前正在做一个小项目,学习一些laravel验证,但遇到了一个问题。 API端点是API/test/schoolbook?start=并且我的验证是 “开始”=>[“日期格式:Y-m-d H:i:s'] 虽然这样做很有吸引力,并且在开学的一年里对教科书进行分类,但我认为我的验证有一些错误。它验证start是否等于定义的日期格式,所有都正常。但是如果我现在解析just?start=没有任何东西,它仍然会通过,但不会抛出错误消息,它只是返回所有内容而不进行排序 有什么方法可以更好地验证这一点并防止

我目前正在做一个小项目,学习一些laravel验证,但遇到了一个问题。 API端点是API/test/schoolbook?start=并且我的验证是 “开始”=>[“日期格式:Y-m-d H:i:s']

虽然这样做很有吸引力,并且在开学的一年里对教科书进行分类,但我认为我的验证有一些错误。它验证start是否等于定义的日期格式,所有都正常。但是如果我现在解析just?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']
        ];
    }
}

只有在请求中出现时,才应过滤开始日期:

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;
}

也许可以尝试“开始”=>[“必需”,“日期”\u格式:Y-m-d H:i:s'],或者在没有超过日期的情况下使用当前日期?请共享您的代码,以便我们提供帮助。如果没有什么可以做的,那就很难了debug@TheFallen如果start未通过,我想返回所有记录:对不起,在我之前的帖子中应该说,然后请共享您所指的控制器代码,以便我们可以根据您寻求的答案对其进行调整: