【问题标题】:Laravel - Custom validation for file doesn't workLaravel - 文件的自定义验证不起作用
【发布时间】:2013-07-09 02:26:25
【问题描述】:

我正在尝试对 Laravel 中的文件输入使用自定义验证规则。文件输入名称是“照片”。我正在尝试将名为“validate_art”的规则应用于此文件输入。我知道有“图像”验证规则,但我想将我自己的自定义规则应用于此文件输入。

代码如下:

  $rules = array('name'=>'required|unique:user,name','startyear'=>'numeric','endyear'=>'numeric'
    ,'photo'=>'validate_art');
    Validator::extend('validate_art',function($attribute,$value,$parameters){
    // returning false just for testing purpose
    return false;
    });

发生的情况是,它根本不会将规则应用于该字段。当我尝试将此规则用于其他领域进行测试时,它可以正常工作。难道我做错了什么?或者自定义验证不能应用于文件输入?请某人,对此有所了解。我真的很感激。

【问题讨论】:

  • 您打开表单文件了吗? -> {{ Form::open(['files'=>true, ...]) }}
  • 是的,我做到了。但是还是不行
  • 你已经Validator::make($input, $rules)了吗?
  • 在这里发布你的表格并涉及控制器方法
  • photo 不是“必需的”,因此如果您的请求中不存在“validate_art”规则,则不会对其进行测试。确保您的请求中有一个名为“photo”的字段,您将其传递给 Validator 对象。它是文件而不是文本字段吗?

标签: php validation laravel laravel-4 customvalidator


【解决方案1】:

首先你应该修改你的输入数据

    foreach ($inputs as $k=>$input){
        if($input instanceOf \Symfony\Component\HttpFoundation\File\UploadedFile)
            $inputs[$k]=$_FILES[$k];
    }

然后将 $input 发送给验证器$validator=Validator::make($input,$rules)

【讨论】:

    猜你喜欢
    • 2020-12-10
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    • 2019-09-28
    • 2017-03-14
    相关资源
    最近更新 更多