哟!我正在制作一张附有图片的表格。
形式:
$table->engine = 'InnoDB';
验证:
{{ Form::file('attachments[]', array('multiple')) }}
我也试过' image'作为验证器规则,但每当我使用jpg图像发布表单时,我都会收到错误:
附件必须是以下类型的文件:jpeg,jpg,png。
使用Laravel 5.3
答案 0 :(得分:0)
由于您定义的输入名称为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
create one与工匠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!)
}