1

在我们的 Symfony (2.8) 项目中,我们使用照明验证器 (5.2) 来验证我们对象的数据,但我是照明的新手,我需要创建一个自定义验证器规则。

所以我需要一个带有 n 个参数的验证器,这些参数可以是其他验证,并且这个验证器需要检查参数验证“或”逻辑连接。像这样的东西:

'attribute' => [
    new OrRule(['requires_if:other_attribute,1','forbidden_if:other_attribute_2,true]),
    'string'
]

我做了这个类,但它不起作用,如果它总是返回 true:

<?php


namespace IlluminateBundle\Part\Rules;

use IlluminateBundle\Part\Validator;
use IlluminateBundle\Part\Rule;

class OrRule extends Rule
{

    /**
     * @inheritDoc
     */
    public static function getRuleName(): string
    {
        return 'or_rule';
    }

    /**
     * @inheritDoc
     */
    public static function handlesMessages(): bool {
        return true;
    }

    /**
     * @inheritDoc
     */
    public function validate(Validator $validator, string $attribute, $value): bool {
        $valid = false;
        foreach ($this->parameters as $parameter) {
            $subArray = explode(':', $parameter);
            $rule = $subArray[0];
            $ruleParams = explode(',', $subArray);

            $validator->validate($ruleParams, $rule);

            if ($validator->failed()) {
                $this->addFailure($validator, $attribute, $this->parameters);
                continue;
            }

            $valid = true;
        }

        if (!$valid) {

            return false;
        }

        return true;

    }
}

你能指导我正确的道路吗?因为我无法解决这个问题。

4

0 回答 0