【问题标题】:Laravel custom validation issueLaravel 自定义验证问题
【发布时间】:2013-01-04 01:15:15
【问题描述】:

我正在尝试注册自定义验证规则,但它似乎不起作用。我需要填写 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();
}

需要帮助:)

已编辑

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

【问题讨论】:

  • $validation->fails() 之后,您检查过$validation 的内容是否正在应用规则?

标签: php validation laravel


【解决方案1】:

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

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

});

Check this out

【讨论】:

    【解决方案2】:

    我自己也在为此苦苦挣扎!事实证明,except when a few specific rules are applied to them, Laravel doesn't pass empty fields through the Validator at all. 因此自定义的非此即彼规则不起作用,因为这两个字段中的至少一个字段可能对其不可见。

    您可以通过从注册新规则方法转向备用extend-the-Validator-class 方法来解决此问题。您的新类将继承标准 Validator 的所有方法,包括一个名为“implicit”的方法(您可以在标准 Validator 类的第 215 行找到原始方法),它指定了 Laravel 应将字段传递给甚至如果它们是空的。将您的新规则添加到该列表中,您应该一切顺利。

    【讨论】:

      【解决方案3】:

      Jason 是对的,但有一件事可能令人困惑。

      Laravel 的“注册新规则”方法使用语法 'Validator::extend(...'。如其他地方所述,当您想要在特殊情况下自定义。但是,如果你想添加一些可重用的规则,那么你可能想要使用扩展验证器类的方法。在这种情况下,如果你有一个规则有条件地需要一些东西,你需要用添加规则的新数组覆盖现有的implicitRules 数组。

      如果您添加的第一条规则不是有条件地要求,您会认为您已经确定了,然后您将花费数小时试图找出为什么您的新 'RequireWhenBlaBla...' 规则不可见。

      【讨论】:

        猜你喜欢
        • 2013-06-21
        • 2020-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-27
        • 2020-11-18
        • 2020-07-21
        相关资源
        最近更新 更多