Laravel 5.2验证文件阵列

时间:2016-08-22 20:47:16

标签: validation laravel

我有一个包含三个字段的表单:titlebodyphoto[]。我试图对其进行验证,以便至少填写一个项目,但我似乎无法让它发挥作用。如果我上传文件,我仍会收到titlebody的错误。

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',
    ];
}

更新:Jonathan指出我的规则错了。我已修复它们,现在正在使用它。它还没有工作;当我尝试上传照片时,我收到错误消息,其他字段是必需的。

public function rules()
{
    return [
        'title' => 'required_without:body,photo.*',
        'body' => 'required_without:title,photo.*',
        'photo.*' => 'required_without:title,body|mimes:jpeg,gif,png',
    ];
}

1 个答案:

答案 0 :(得分:0)

如果您希望确保photo字段是一个数组,那么您需要'photo' => 'array',然后您可以使用'photo.*' => ''进行数组的其他验证'的孩子们。

规则由管道符|分隔,因此如果您要在示例中将两者合并,则为'photo.*' => 'required_without_all:title,body|mimes:jpeg,gif,png',。我没有看到你使用管道分开规则,所以我无法确定你是否知道它。

这可能是你首先出错的地方(关联数组中的两个键完全相同),某种优先权会影响否定其中一条规则。

你可以尝试这样的事情(为了记录,我认为你开始使用required_without_all是正确的,因为这规定了如果所有给定的需要字段丢失):

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',
    ];
}

Reference