我在“zendframework/zend-inputfilter”v2.8.1 上。对我来说非常令人惊讶 - 我无法找到下一个场景的配置或设置选项:
我们有 2 个字段,需要填充一个或另一个。
例如:我们有 2 个字段:“ year ”和“ age ”。我想创建一个需要设置“年份”或“年龄”的验证配置。
所以我的有效载荷应该是这样的
{
"year": 2000
}
或者
{
"age": 18
}
或者
{
"year": 2000,
"age": 18
}
这应该是无效的:
{}
不幸的是,像这样的其他问题(Zend Framework 的 2 InputFilter 有条件地要求)似乎已经过时或不准确。例如,如果我尝试将字段“year”设为可选,对于有效载荷
{
"age": 18
}
和
{}
由于此代码,它被跳过了\Zend\InputFilter\BaseInputFilter::validateInputs
// If input is optional (not required), and value is not set, then ignore.
if (! array_key_exists($name, $data)
&& ! $input->isRequired()
) {
continue;
}
如果我要求它,我会达到条件\Zend\InputFilter\Input::isValid
if (! $hasValue && $required) {
if ($this->errorMessage === null) {
$this->errorMessage = $this->prepareRequiredValidationFailureMessage();
}
return false;
}
我对重写 BaseInputFilter 或 Input 类犹豫不决,但从我现在看到的情况来看,这似乎是我唯一的选择。但是,也许我错过了一些东西。我将不胜感激任何建议,谢谢!