<span><span><?php </span></span><span><span>class Application_Form_User extends Zend_Form </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>// create the field </span></span><span> <span>$element = new Zend_Form_Element_Text("name"); </span></span><span> <span>$element->setLabel("Name"); </span></span><span> </span><span> <span>// set the validators </span></span><span> <span>$element->setValidators(array( </span></span><span> <span>new Zend_Validate_Alpha(true), </span></span><span> <span>new Zend_Validate_StringLength( </span></span><span> <span>array("min" => 3, "max" => 50)) </span></span><span> <span>)); </span></span><span> <span>$element->setRequired(); </span></span><span> </span><span> <span>// add the element to the form </span></span><span> <span>$this->addElement($element); </span></span><span> </span><span> <span>// add a submit button </span></span><span> <span>$element = new Zend_Form_Element_Submit("submit"); </span></span><span> <span>$element->setLabel("Submit"); </span></span><span> <span>$this->addElement($element); </span></span><span> <span>} </span></span><span><span>}</span></span>在控制器中,我們將檢查該字段是否有效並採取相應行動。通常,您不會使用indexController,並且可能會在特定控制器中使用此驗證。無論如何,為了簡化示例,我將使用它。
<span><span><?php </span></span><span><span>class IndexController extends Zend_Controller_Action </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>} </span></span><span> </span><span> <span>public function indexAction() { </span></span><span> <span>$form = new Application_Form_User(); </span></span><span> </span><span> <span>if ($this->getRequest()->isPost() && </span></span><span> <span>$form->isValid($this->getRequest()->getPost())) { </span></span><span> <span>$this->view->message = "Valid input"; </span></span><span> <span>} </span></span><span> <span>else { </span></span><span> <span>$this->view->form = $form; </span></span><span> <span>} </span></span><span> <span>} </span></span><span><span>}</span></span>所使用的視圖非常簡單;它僅顯示消息和表單。
<span><span><?php </span></span><span><span>if (isset($this->message)) { </span></span><span> <span>echo $this->message; </span></span><span><span>} </span></span><span><span>if (isset($this->form)) { </span></span><span> <span>echo $this->form; </span></span><span><span>}</span></span>上面的源代碼,沒有任何CSS規則,將其呈現:
<span><span><?php </span></span><span><span>class Application_Form_User extends Zend_Form </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>// create the field </span></span><span> <span>$element = new Zend_Form_Element_Text("name"); </span></span><span> <span>$element->setLabel("Name"); </span></span><span> </span><span> <span>// set the validators </span></span><span> <span>$element->setValidators(array( </span></span><span> <span>new Zend_Validate_Alpha(true), </span></span><span> <span>new Zend_Validate_StringLength( </span></span><span> <span>array("min" => 3, "max" => 50)) </span></span><span> <span>)); </span></span><span> <span>$element->setRequired(); </span></span><span> </span><span> <span>// add the element to the form </span></span><span> <span>$this->addElement($element); </span></span><span> </span><span> <span>// add a submit button </span></span><span> <span>$element = new Zend_Form_Element_Submit("submit"); </span></span><span> <span>$element->setLabel("Submit"); </span></span><span> <span>$this->addElement($element); </span></span><span> <span>} </span></span><span><span>}</span></span>此方法以及顯示給定的字符串也將字段標記為無效。 它可以在應用程序邏輯中兩次使用,但是在兩者中,它具有對我們的目標無用的行為。第一個是在創建表單元素(init(init()方法)期間。在這種情況下,在加載表單後以及用戶插入任何數據之前顯示消息。非常不愉快。在這種情況下,代碼的相關部分類似:
<span><span><?php </span></span><span><span>class IndexController extends Zend_Controller_Action </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>} </span></span><span> </span><span> <span>public function indexAction() { </span></span><span> <span>$form = new Application_Form_User(); </span></span><span> </span><span> <span>if ($this->getRequest()->isPost() && </span></span><span> <span>$form->isValid($this->getRequest()->getPost())) { </span></span><span> <span>$this->view->message = "Valid input"; </span></span><span> <span>} </span></span><span> <span>else { </span></span><span> <span>$this->view->form = $form; </span></span><span> <span>} </span></span><span> <span>} </span></span><span><span>}</span></span>在控制器內的常用數據驗證期間發送信息後,第二次發生。發生的事情是,當發生錯誤時,自定義消息將附加到默認消息上。在這種情況下,索引控制器的索引()以這種方式更改:
<span><span><?php </span></span><span><span>if (isset($this->message)) { </span></span><span> <span>echo $this->message; </span></span><span><span>} </span></span><span><span>if (isset($this->form)) { </span></span><span> <span>echo $this->form; </span></span><span><span>}</span></span>就像seterrors()一樣,seterRormessages()方法作為參數作為一個字符串數組,如果輸入無效,將顯示給用戶。其使用的一個例子是:
<span><span><?php </span></span><span><span>// set the custom message in the case of an error </span></span><span><span>$element->setErrors(array("The input is invalid. The value must have only alphabetic characters and spaces and its length must be between 3 and 50 characters."));</span></span>這條代碼行仍然無法解決問題Beucase,它將顯示每個不滿意的條件都會顯示相同的錯誤消息,或者將沒有效果。如果在init()方法中使用所示的行,以setErrors()顯示的方式相同的方式,則在錯誤的情況下,將顯示自定義消息的數量與用戶輸入違反的條件數量一樣多。如果在控制器內的通常數據驗證期間插入該行,則以前面的解釋方式,將沒有效果。這意味著不會顯示自定義消息,並且框架將僅顯示默認消息。
<span><span><?php </span></span><span><span>class Application_Form_User extends Zend_Form </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>// create the field </span></span><span> <span>$element = new Zend_Form_Element_Text("name"); </span></span><span> <span>$element->setLabel("Name"); </span></span><span> </span><span> <span>// set the validators </span></span><span> <span>$element->setValidators(array( </span></span><span> <span>new Zend_Validate_Alpha(true), </span></span><span> <span>new Zend_Validate_StringLength( </span></span><span> <span>array("min" => 3, "max" => 50)) </span></span><span> <span>)); </span></span><span> <span>$element->setRequired(); </span></span><span> </span><span> <span>// add the element to the form </span></span><span> <span>$this->addElement($element); </span></span><span> </span><span> <span>// add a submit button </span></span><span> <span>$element = new Zend_Form_Element_Submit("submit"); </span></span><span> <span>$element->setLabel("Submit"); </span></span><span> <span>$this->addElement($element); </span></span><span> <span>} </span></span><span><span>}</span></span>結論
- > addValidator('nocempty',true)
> - > addValidator('emailAddress');
$ email- -> getValidator('nocementy') - > setMessage('請輸入您的電子郵件地址');
在本示例中,setMessage()方法用於為“電子郵件”表單元素的“ notempty”驗證器設置自定義錯誤消息。 zend?
>如果要在zend中為form元素設置多個自定義錯誤消息,則可以使用setMessages()方法。此方法接受錯誤消息數組。這是一個示例:
$ email = new zend_form_element_text('email');
$ email--> getValidator('notempty') - > setMessages(array(
zend_end_validate_notempty) :無效=>'請輸入有效的電子郵件地址'
));
在此示例中,setMessages()方法用於為“電子郵件”表單元素的“無empppy”驗證器設置多個自定義錯誤消息。
>當表單在zend中失敗驗證時,您可以使用adderror()方法顯示自定義錯誤消息。此方法添加了一個錯誤消息,當表單失敗驗證時將顯示。以下是一個示例:
$ form = new zend_form();
$ form-> addElement('text','email',array(
>'valiverators'=> array('notempty','options'=> array('message'=>'需要電子郵件')),
array('valiverator'=>> 'emailAddress','options '=> array('消息'=>'無效的電子郵件地址')
)
));
> if(!$ form- form-> isvalid($ _ post)){
$ form-> adderror('提交中有錯誤。請更正它們,然後重試。');
在此示例中, adderror ()方法用於添加一個自定義錯誤消息,該消息將在表單失敗驗證時將顯示。
>
>我如何更改zend中的默認錯誤消息?
$ email--> setlabel('email emeldlobel('email dorkation')
- > - > addvalidator( 'notempty',true)
- > addValidator('emailAddress');
$ email--> getValidator('notempty') - > setMessage('請輸入您的電子郵件地址');
> $ emagevalidator('emailAddress'') - > setMessage('請輸入有效的電子郵件地址');在本示例中,setMessage()方法用於更改默認錯誤消息的“ notempty”和“ emailAddress”'電子郵件'表單元素的驗證器。
如何為zend element中需要的表單元素設置自定義錯誤消息?在Zend中需要,您可以使用SetRequired()和AdderRormessage()方法為其設置自定義錯誤消息。這是一個示例:
$ email = new zend_form_element_text('email');
以上是PHP主|設置zend_form_element的自定義錯誤消息的詳細內容。更多資訊請關注PHP中文網其他相關文章!