Laravel自定义验证问题

Luc*_*oni 2 php validation laravel

我正在尝试注册自定义验证规则但它似乎不起作用.我需要填写2个字段中的任何一个.一个是URL(链接)字段,另一个是文件输入(file_upload).这是我的自定义验证:

Validator::register('file_check', function($attribute, $value, $parameters) {
    if (!trim($value) == "" || array_get(Input::file($parameters[0]), 'tmp_name')) {
        return true;
    }
    return false;
});

$messages = array(
    'file_check' => 'Please upload a file or provide a link to files.',
);

$rules = array(
    'link' => 'url|file_check:file_upload',
    'file_upload' => 'mimes:jpg,jpeg,gif,png,psd,ai,bmp,xls,xlsx,doc,docx,zip,rar,7z,txt,pdf'

);
$validation = Validator::make(Input::all(), $rules, $messages);

if ($validation - > fails()) {
    return Redirect::to('page') - > with_errors($validation - > errors) - > with_input();
}
Run Code Online (Sandbox Code Playgroud)

需要帮忙 :)

EDITED

此外,我只是注意到验证规则应该接受"PSD"文件,但是当我尝试上传PSD文件时,它会重定向并显示错误"无效的文件类型".

man*_*ish 6

我可能会在派对上迟到但可能有人会发现它很有用,以防你需要创建隐式规则,即使在Input中没有字段(如required,required_if ....),它也会被调用

Validator::extendImplicit( 'validator_name', function($attribute, $value, $parameters)
{

});
Run Code Online (Sandbox Code Playgroud)

看一下这个


Jas*_*itz 5

我自己就是在苦苦挣扎!事实证明,除非对它们应用了一些特定的规则,否则Laravel根本不会通过Validator传递空字段.因此,自定义这个或那个规则不起作用,因为这两个字段中至少有一个可能不可见.

您可以通过从注册新规则方法转移到备用extend-the-Validator类方法来解决这个问题.您的新类将继承标准Validator的所有方法,包括一个名为"implicit"的方法(您可以在标准Validator类的第215行找到原始方法),该方法指定Laravel应将字段传递给偶数的规则白名单如果他们是空的 将新规则添加到该列表中,您应该很高兴.