Validation Laravel 5.2验证文件数组
我有一个包含三个字段的表单:Validation Laravel 5.2验证文件数组,validation,laravel,Validation,Laravel,我有一个包含三个字段的表单:title、body和photo[]。我试图验证它,以便至少有一个项目被填写,但我似乎无法让它工作。如果我上传文件,我仍然会收到标题和正文的错误 public function rules() { return [ 'title' => 'required_without_all:body,photo.*', 'body' => 'required_without_all:title,photo.*',
title
、body
和photo[]
。我试图验证它,以便至少有一个项目被填写,但我似乎无法让它工作。如果我上传文件,我仍然会收到标题
和正文
的错误
public function rules()
{
return [
'title' => 'required_without_all:body,photo.*',
'body' => 'required_without_all:title,photo.*',
'photo.*' => 'required_without_all:title,body',
'photo.*' => 'mimes:jpeg,gif,png',
];
}
更新:乔纳森指出我的规则错了。我已经修复了它们,现在正在使用它。它仍然不起作用;当我试图上传一张照片时,我得到一条错误消息,其他字段是必需的
public function rules()
{
return [
'title' => 'required_without:body,photo.*',
'body' => 'required_without:title,photo.*',
'photo.*' => 'required_without:title,body|mimes:jpeg,gif,png',
];
}
如果您希望确保
photo
字段是一个数组,那么您需要'photo'=>'array'
,然后您可以使用'photo.*'=>'
对数组的子项进行其他验证
这些规则由管道字符|
分隔,因此,如果要在示例中结合这两个字符,则需要“photo.*”=>“required”,而不需要所有字符:标题、正文| mimes:jpeg、gif、png、
。我没有看到你用管道来分隔规则,所以我不能确定你是否知道
这可能是您首先出错的地方(关联数组中两个相同的键),并且某种优先级会影响对其中一个规则的否定
您可以尝试类似的方法(作为记录,我认为您开始使用required\u而不使用\u all
是正确的,因为这规定了如果缺少所有给定字段,则需要使用):
为什么同一字段有两条规则?请详细说明你想做什么,因为我不太清楚,但在我的回答初稿中做了一些假设是的,谢谢。我的眼睛昏昏欲睡,正在制定我的规则,就像你如何设置消息一样:每条消息一行。我把尺子固定好,用管子把它们分开;这没用。我不确定你所说的
'photo'=>'array'
是什么意思?我想让用户至少填写一个字段。因此,他们必须上传照片,或添加标题,或在正文中添加文字;他们不能提交空表单。'photo'=>array'
只需检查您的photo
值是否为数组。因为您正在发送n张照片,每个照片都封装在最顶端的阵列中。因此,第一个验证将是确保您接收到一个数组。我抓起您的代码并将photo.*
切换到'photo.*=>'| required|u,不带所有内容:标题、正文| mimes:jpeg、gif、png'
,它可以工作!谢谢
public function rules()
{
return [
'title' => 'required_without_all:body,photo',
'body' => 'required_without_all:title,photo',
'photo' => 'array',
'photo.*' => 'required_without_all:title,body|mimes:jpeg,gif,png',
];
}