Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel自定义验证问题_Php_Validation_Laravel - Fatal编程技术网

Php Laravel自定义验证问题

Php Laravel自定义验证问题,php,validation,laravel,Php,Validation,Laravel,我正在尝试注册自定义验证规则,但它似乎不起作用。我需要填写两个字段中的任何一个。一个是URL(链接)字段,另一个是文件输入(文件上传)。 以下是我的自定义验证: Validator::register('file_check', function($attribute, $value, $parameters) { if (!trim($value) == "" || array_get(Input::file($parameters[0]), 'tmp_name')) {

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

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();
}
需要帮助:)

已编辑


另外,我刚刚注意到验证规则应该接受“PSD”文件,但当我尝试上载PSD文件时,它会重定向错误“无效文件类型”。

我自己也在努力解决这个问题!事实证明,自定义的this或that规则无法工作,因为这两个字段中至少有一个可能不可见


您可以通过从注册新规则方法转移到替代方法来解决这个问题。您的新类将继承标准验证器的所有方法,包括一个名为“implicit”的方法(您可以在标准验证器类的第215行找到原始方法),该方法指定了Laravel应该传递字段的规则白名单,即使字段为空。将你的新规则添加到该列表中,你就可以开始了。

Jason是对的,但有一件事可能会让人困惑

Laravel的“注册新规则”方法使用语法“Validator::extend(…”。如其他地方所述,当您想在特殊情况下进行自定义时,这很方便。但是,如果您想添加大量可重用规则,则可能需要使用扩展验证程序类方法。在这种情况下,如果您有一条规则有条件地需要某些内容,则需要重写现有隐式规则数组一个新的加入了你的规则


如果您添加的第一个规则没有条件要求,您会认为您已经确定了,然后您将花费数小时试图找出新的“RequireHenblabla…”规则不可见的原因。

我可能在聚会上迟到了,但可能有人会发现它很有用,以防您需要创建隐式规则,即使字段不存在,也会调用它输入中不存在(如需要,如需要)使用


$validation->fails()之后(
是否检查了
$validation
的内容以查看是否应用了规则?
Validator::extendImplicit( 'validator_name', function($attribute, $value, $parameters)
{

});