【发布时间】: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