[英]How to add an error message to the form in Zend Framework 2?
我有一個帶有多個嵌套Fieldset
的復雜Zend\\Form
。 現在我需要實現跨Fieldset
-validation。 這意味着,驗證規則引用了來自不同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
錯誤消息?
需要加入消息以獲取表單元素。
$form->get('password')->setMessages(['Wrong password']);
錯誤消息鏈接到表單的元素,而不是直接鏈接到表單。 因此,正如newage所說,您必須為特定元素設置消息(因此他的回答有效,我贊成:-))。
但是,在擴展Form時,可以直接在form中設置自己的錯誤消息方法:
MyForm extends Form
{
protected $errorMessages = [];
public function isValid()
{
$isFormValid = parent::isValid();
$isCrossFieldsetValidationOk = // your additional validation logic
if (!$isCrossFieldsetValidationOk) {
$this->addErrorMessage('Oh oh... Cross-fieldset validation error...');
}
return $isFormValid && $isCrossFieldsetValidationOk;
}
public function addErrorMessage($text)
{
$this->errorMessages[] = $text ;
return $this; // For a fluent setter
}
public function getErrorMessages()
{
return $this->errorMessages ;
}
public function getMessages($elementName = null)
{
if ($elementName) {
$messages = parent::getMessages($elementName);
} else {
$messages = array_merge($this->getErrorMessages(), parent::getMessages($elementName));
}
return $messages;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.