【问题标题】:Laravel 5.4 validator not seeing input fieldLaravel 5.4 验证器看不到输入字段
【发布时间】:2017-11-13 09:07:49
【问题描述】:

所以我正在尝试使用Validator 外观设置验证。出于某种奇怪的原因,验证器没有看到其中一个输入字段,尽管它存在于请求中。这是验证码:

        $rules = [
            'name'          => 'required',
            'resource_type' => 'required',
            'semester'      => 'required',
            'file'          => 'required|max:8196'
        ];
        $messages = [
            'name.required' => 'The name field is required',
            'semester.required' => 'The semester field is required',
            'resource_type.required' => 'The resource_type field is required',
            'file.required' => 'The file field is required',
            'file.max' => 'The max file size is 8196 kilobytes',
        ];

        $validator = Validator::make($request->input(), $rules, $messages);
        if ($validator->fails()) {
            return response()->json($validator->messages(), 422);
        }

这是我正在运行的测试:

$file = UploadedFile::fake()->create('file.pdf', 512);
    $response = $this->json( "POST", 'api/v2/papers', [
        "name"          => $paper->name,
        "semester"      => $paper->semester,
        "resource_type" => $paper->resource_type,
        "file"          => $file,
    ] )->assertSuccessful();

当我打印$response->content() 的值时,我得到了

{"file":["The file field is required"]}

文件字段存在,所以我不确定到底发生了什么?

提前致谢。

【问题讨论】:

  • 您的 file 内容类型不是 json,您必须测试内容类型为 multipart/formdata 的正常请求
  • @Matz 根据 laravel 官方文档,应该可以使用 json 方法发布文件。
  • 你在$file得到了什么?
  • @user2486 是假类生成的虚拟文件
  • 不错,从没见过 :)

标签: php laravel laravel-5.4


【解决方案1】:

不要使用$request->input(),它不包含文件。

使用$request->all()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-09
    • 2015-04-29
    • 2017-10-19
    • 2021-08-13
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    相关资源
    最近更新 更多