我正在使用 Laravel 表单请求来验证输入组数组。我需要使用循环检查文件以进行自定义验证。但它显示了这个错误。
Error
Call to undefined method Symfony\Component\HttpFoundation\ParameterBag::hasFile()
Run Code Online (Sandbox Code Playgroud)
我的 HTML 输入 (createUser.blade.php)
<input type="text" name="users[0][name]">
<input type="number" name="users[0][age]">
<input type="file" name="users[0][profile_pic]">
<input type="text" name="users[1][name]">
<input type="number" name="users[1][age]">
<input type="file" name="users[1][profile_pic]">
Run Code Online (Sandbox Code Playgroud)
我的表单请求 (CreateUserFormRequest.php)
dd($this->request->hasFile('users');
Run Code Online (Sandbox Code Playgroud)
在类内部FormRequest,如果你想检查请求是否有价值,那么你可以像下面这样做
$this->has('users')
Run Code Online (Sandbox Code Playgroud)
如果您想检查请求是否有文件,那么
$this->hasFile('logo')
Run Code Online (Sandbox Code Playgroud)
还要确保输入类型是文件
然后检查请求中的所有数据
$this->all()
Run Code Online (Sandbox Code Playgroud)
对于文件,请确保输入类型是文件
<input type="file" name="users[1][profile_pic]">
Run Code Online (Sandbox Code Playgroud)
还要确保 enctype="multipart/form-data"在表单标签中
<form method="POST" action="" enctype="multipart/form-data">
Updated
<form method="POST" action="{{route("testing")}}" enctype="multipart/form-data">
@csrf
<input type="number" name="users[0][name]">
<input type="number" name="users[0][age]">
<input type="file" name="users[0][profile_pic]">
<input type="number" name="users[1][name]">
<input type="number" name="users[1][age]">
<input type="file" name="users[1][profile_pic]">
<button type="submit">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
并在表格请求中
foreach ($this->users as $key=>$value){
if($value['profile_pic']!=null){
dump($value['profile_pic']);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您正在寻找文件验证,那么您可以执行以下操作
public function rules()
{
return [
'users.*.profile_pic'=>'required|file'
];
}
Run Code Online (Sandbox Code Playgroud)
在你看来
<input type="file" name="users[0][profile_pic]">
{{ $errors->first('users.0.profile_pic') }}
<input type="file" name="users[1][profile_pic]">
{{ $errors->first('users.1.profile_pic') }}
Run Code Online (Sandbox Code Playgroud)