我有一个复杂的 Zend\Form
,内部嵌套多个 Fieldset
。现在我需要实现跨 Fieldset
的验证。也就是说,验证规则涉及来自不同 Fieldset
的多个 Element
。我找到唯一的方法是在 MyForm#isValid()
中实现此验证,因为它是我可以访问每个 Fieldset
的唯一位置。
MyForm extends Form
{
public function isValid()
{
$isFormValid = parent::isValid();
$isCrossFieldsetVaidationOk = // my additional validation logic
return $isFormValid && $isCrossFieldsetVaidationOk;
}
}
尚未测试,但它会起作用。问题在于添加错误消息。
我已经尝试过。
$this->setMessages(array_merge(
$this->getMessages(), ['my new message'])
);
但它没起作用。
我该如何添加 Form
错误消息?
Element
(在不同的Fieldset
中)的条件。 例如:有多个不同Fieldset
中的foo
Element
(我们无法知道有多少,它们是动态添加的)。 至少必须设置/填写一个foo
。 另一个例子:有多个bar
元素。 它们的值之和必须大于“x”。 在这两种情况下,“Element”的值本身不能有效或无效。 这就是为什么我正在寻找一种定义“通过”Fieldset
的验证方式,并直接将消息添加到“表单”中的方法。 - automatix