在我们的 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;
}
}
你能指导我正确的道路吗?因为我无法解决这个问题。