首页 > 解决方案 > Laravel 验证规则 - 如何可选,但前提是另一个条件为真

问题描述

如何使用验证制定自定义规则,以便该字段可以为空“因为”调用函数结果为真,否则,该字段成为必需的。

当然我尝试使用'nullable',但是即使该字段为空,Validation 也应该执行 checkAreasDiff() 函数来验证该字段在更新期间是否可以为空。

在我的控制器中,我创建了一个函数:

    private function validator_update(array $data) {

    \Validator::extend('areas_diff', function($attribute, $value, $parameters, $validator) {
        return checkAreasDiff();
    }, 'VALIDATOR AREAS_DIFF OK.');

    /**
     * RULES
     */
    $rules = [
        'fiscalizoarea'  => 'areas_diff',
    ];


    /**
     * Return \Validator
     */
    return \Validator::make($data, $rules, $msgs);
}

标签: laravellaravel-validation

解决方案


如果我正确理解了这个问题,您是否希望仅当另一个字段不为空时才需要一个字段?

已经有一个 Laravel 规则:required_with

required_with:foo,bar,...

仅当存在任何其他指定字段时,验证中的字段才必须存在且不为空。

或者,如果我让你的逻辑回到前面:required_without

required_without:foo,bar,...

仅当任何其他指定字段不存在时,验证中的字段才必须存在且不为空。


推荐阅读