【问题标题】:Laravel custom validation: only validate input if input givenLaravel 自定义验证:仅在给定输入时验证输入
【发布时间】:2018-01-05 02:47:42
【问题描述】:

所以我按照这个教程学习了如何使用 Vue 使用 Laravel 上传图片:Image upload and validation using Laravel and VueJs

一切正常,但我想让图片上传可选。现在,AppServiceProvider 的自定义验证失败。如果它没有任何输入,那么我会收到此错误

试图访问不存在的数组中的属性。未定义的偏移量:1

我可以通过询问来避免错误

if (request('image'))

只有在没有给出图像的情况下,才在控制器中对其他字段应用验证。然而,这变得非常混乱。

所以我正在寻找一种在没有输入的情况下让自定义验证规则起作用的方法。还是那是错误的方式?

这是自定义验证规则:

public function boot()
{
    Validator::extend('image64', function ($attribute, $value, $parameters, $validator) {
        $type = explode('/', explode(':', substr($value, 0, strpos($value, ';')))[1])[1];
        if (in_array($type, $parameters)) {
            return true;
        }
        return false;
    });

    Validator::replacer('image64', function($message, $attribute, $rule, $parameters) {
        return str_replace(':values',join(",",$parameters),$message);
    });
}

【问题讨论】:

    标签: laravel validation file-upload image-uploading customvalidator


    【解决方案1】:

    在某些情况下,您可能希望仅当输入数组中存在该字段时才对该字段运行验证检查。要快速完成此操作,请将sometimes 规则添加到您的规则列表中:

    $v = Validator::make($data, [
        'email' => 'sometimes|required|email',
    ]);
    

    在上面的示例中,电子邮件字段只有在 $data 数组中存在时才会被验证。

    参考:Conditionally Adding Rules

    【讨论】:

    【解决方案2】:

    Laravel 提供了一个名为“nullable”的验证,以防如果给定值为 null,则不应运行其他验证规则:A Note On Optional Fields

    【讨论】:

      猜你喜欢
      • 2018-03-18
      • 2016-03-04
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多