哟!我正在制作一个表格,在其中附加一些图像。
形式:
{{ Form::file('attachments[]', array('multiple')) }}
验证:
$this->validate($response, array(
'attachments' => 'required | mimes:jpeg,jpg,png',
));
我也尝试过使用“图像”作为验证器规则,但每当我发布带有 jpg 图像的表单时,我都会收到错误:
附件必须是以下类型的文件:jpeg、jpg、png。
使用 Laravel 5.3
由于您定义了输入名称
attachments[]
,附件将是一个包含您的文件的数组。如果您只需要上传一个文件,您可能需要将输入名称重命名为 attachments
,而不包含 []
(或者在这种情况下 attachment
更有意义)。如果您需要能够上传多个,您可以在 Request
扩展类中构建一个迭代器,该迭代器返回一组涵盖 attachments[]
中每个条目的规则
protected function attachments()
{
$rules = [];
$postedValues = $this->request->get('attachments');
if(null == $postedValues) {
return $rules;
}
// Let's create some rules!
foreach($postedValues as $index => $value) {
$rules["attachments.$index"] = 'required|mimes:jpeg,jpg,png';
}
/* Let's imagine we've uploaded 2 images. $rules would look like this:
[
'attachments.0' => 'required|mimes:jpeg,jpg,png',
'attachments.1' => 'required|mimes:jpeg,jpg,png'
];
*/
return $rules;
}
然后,您可以在
rules()
中调用该函数,将从 attachments
返回的数组与您可能想要为该请求指定的任何其他规则合并:
public function rules()
{
return array_merge($this->attachments(), [
// Create any additional rules for your request here...
]);
}
如果您的表单还没有专用的
Request
扩展类,您可以通过输入:php artisan make:request MyRequestName
使用 artisan cli 创建一个。将在
app\Http\Requests
内创建一个新的请求类。这就是您将上面的代码放入其中的文件。接下来,您可以在控制器端点的函数签名中typehint这个类:
public function myControllerEndpoint(MyRequestName $request)
{
// Do your logic... (if your code gets here, all rules inside MyRequestName are met, yay!)
}