如何解决Laravel 跳过“必需”文件验证
我在使用 laravel 8 时遇到问题,我真的不知道我做错了什么,但是文件在验证中跳过了所需的规则,我正在发送包含名称和文件数组的表单,并在控制器中执行验证:
public function store(StoreExamenRequest $examenRequest,StoreResultadoRequest $resultadoRequest)
{
$validacionExamen = $examenRequest->validated();
$validacionResultado = $resultadoRequest-validated();
不验证文件的部分是$resultadoRequest-validated();
这是StoreResultadoRequest
的内容
class StoreResultadoRequest extends FormRequest {
public function authorize()
{
return true;
}
public function rules()
{
$this->redirect => url()->previous();
return [
'NombreResultado.*' => 'required|string','ArchivoResultado.*' => 'required|file|mimes:pdf|max:1024',];
}
public function messages()
{
return [
'NombreResultado.required' => __('NombreResultado.required'),'ArchivoResultado.required' => __('ArchivoResultado.required'),'ArchivoResultado.file' => __('ArchivoResultado.file'),'ArchivoResultado.mimes' => __('ArchivoResultado.mimes'),'ArchivoResultado.max' => __('ArchivoResultado.max')
];
}
}
NombreResultado.required
所需规则验证正常,问题在于 ArchivoResultado.required
它正在验证除 required
规则之外的所有规则。我试过删除所有其他规则并只保留该规则,但它不起作用。当我提交没有文件的表单时,这是控制器中 dd
的 $validacionResultado
:
array:1 [
"NombreResultado" => array:1 [
0 => "Name of the file"
]
]
这是一个带有附加文件的 dd
:
array:2 [
"NombreResultado" => array:1 [
0 => "Name of the file"
]
"ArchivoResultado" => array:1 [
0 => Illuminate\Http\UploadedFile {#1328
-test: false
-originalName: "factura_00000525.pdf"
-mimeType: "application/pdf"
-error: 0
#hashName: null
path: "/private/var/tmp"
filename: "phpoVUvWV"
basename: "phpoVUvWV"
pathname: "/private/var/tmp/phpoVUvWV"
extension: ""
realPath: "/private/var/tmp/phpoVUvWV"
aTime: 2021-03-13 04:53:56
mTime: 2021-03-13 04:53:56
cTime: 2021-03-13 04:53:56
inode: 80503611
size: 136213
perms: 0100600
owner: 70
group: 0
type: "file"
writable: true
readable: true
executable: false
file: true
dir: false
link: false
}
]
]
我没有附加 dd
的 $resultadoRequest
,因为它太长了。你能指出我正确的方向吗?
解决方法
您要检查文件数组是否存在且不为空,然后检查数组中的每个文件。你已经有了检查数组中每个文件的部分,所以添加数组本身的检查。
return [
'NombreResultado.*' => 'required|string','ArchivoResultado' => 'required|array','ArchivoResultado.*' => 'required|file|mimes:pdf|max:1024',];
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。