PHP主|設置zend_form_element的自定義錯誤消息
鑰匙要點
- >基於Zend Framework創建非英語網站或應用程序時,開發人員經常在標記Zend_form的字段(是Zend_form_element)中遇到的努力,為無效和顯示自定義錯誤消息。這主要是由於zend_form_element類的本機反直覺方法。
- >由美國公司Zend擁有的Zend Framework的默認行為是為用戶輸入破壞的每個驗證器以英語顯示錯誤消息。開發人員可以轉換框架的每個錯誤消息,也可以在一個或多個消息中解釋輸入無效,並顯示建議以插入可接受的值。後一種選擇不那麼複雜,尤其是對於中小型項目。 >解決此問題的解決方案在於形式(init(init()方法)內部的字段和seterRormessages()方法的使用與Zend框架驗證器的屬性,稱為BreakChainonFailure()。此屬性允許驗證過程在第一個失敗條件下停止。這種方法允許該表單在無效輸入時僅顯示自定義消息。
開發一個示例
假設您有一個具有不同字段的表格,並且僅考慮其中一個字段,例如用於讓用戶輸入他的名稱的文本輸入字段。您可以使用的驗證器是不同的,但是為了示例,我們將限制名稱的長度,並且僅允許字母字符和空格。說Zend Framework語言,我們將分別使用Zend_validate_stringlength和zend_validate_alpha類。 您可能已經知道,Zend Framework歸American Company Zend擁有,因此它顯示的所有消息都是英文。框架的默認行為是為用戶輸入破壞的每個驗證器顯示一個或多個錯誤消息。因此,對於那些正在構建非英語網站的人,有兩個選項可以讓所有用戶可讀取消息:翻譯框架的每個錯誤消息,或在一條或多個消息中解釋輸入是無效的,並顯示建議的建議可以插入公認的價值。第一個選擇是過於復雜的,尤其是對於中小型項目,因此我將展示如何使用第二種選項。 為了簡化它,我們將設置一個自定義消息:“輸入是無效的。該值必須只有字母字符和空格,其長度必須在3到50個字符之間。”代碼
我將展示我們將在文章中使用的代碼。首先,這是包含名稱的輸入字段和檢查數據所需的驗證器的表單。<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>
<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>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>
<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>
<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>
發現解決方案
現在,關鍵是要理解和>> 為了插入自定義消息,以便用戶可以進行比較和有關接受哪些值的建議。毫無疑問,何時發生在表單內(init(init()方法)內部的字段以及如何歸結為seterRormessages()方法的結合以及使用Zend Framework的屬性,稱為BreakChainonFailure() 。後者允許我們在第一個失敗條件下停止驗證過程。如果我們設置了五個驗證器,但第一個驗證器失敗,則不會使用其他四個。 要利用此屬性利用最少數量的代碼行,我將在開始時說明的代碼。我將添加到INIT()方法中使用SeterRormess()方法的代碼行,並利用SetValidators()接受的可能的輸入配置之一,該配置期望有一系列數組。主一個中包含的數組最多可以具有三個參數,其中包括:- >字符串(強制性)以將驗證器指定為用戶。
- >布爾值(默認情況下,其值為false),以指定框架是否必須在第一個失敗時打破驗證。因此,此參數設置了屬性breakchainonfailure的價值,這將幫助我們實現目標。 每個選擇的驗證器
- >的選項數組(默認情況下,默認為空數組)都不同 使用要使用的每個驗證器所使用的第二個參數是必不可少的。 根據我們到目前為止所看到的,由此產生的代碼是:
<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>
使用上面的代碼,該表格僅在無效輸入時僅顯示自定義消息……正是我們想要的!如果您需要使用更多消息,例如在幾個階段的建議中,只需在用於SeterRormessages()方法的數組中添加更多字符串即可。 通過fotolia
圖像 在設置Zend表單元素的自定義錯誤消息時,經常詢問的問題(常見問題解答) >如何在zend中自定義特定表單元素的錯誤消息?>自定義Zend中特定表單元素的錯誤消息非常簡單。您可以使用setMessage()方法為特定驗證器設置自定義錯誤消息。例如,如果您有一個名為“電子郵件”的表單元素,並且要為其設置自定義錯誤消息,則可以按以下方式進行:
$ email = new zend_form_element_text('email'') ; $ email--> setLabel('電子郵件地址')
- > addValidator('nocempty',true)
> - > addValidator('emailAddress');
$ email- -> getValidator('nocementy') - > setMessage('請輸入您的電子郵件地址');
在本示例中,setMessage()方法用於為“電子郵件”表單元素的“ notempty”驗證器設置自定義錯誤消息。 zend?
>如果要在zend中為form元素設置多個自定義錯誤消息,則可以使用setMessages()方法。此方法接受錯誤消息數組。這是一個示例:
$ email = new zend_form_element_text('email');
- > - > addvalidator( 'notempty',true)
- > addValidator('emailAddress');$ email--> getValidator('notempty') - > setMessages(array(
zend_end_validate_notempty) :無效=>'請輸入有效的電子郵件地址'
));
在此示例中,setMessages()方法用於為“電子郵件”表單元素的“無empppy”驗證器設置多個自定義錯誤消息。
>當表單在zend中失敗驗證時如何顯示自定義錯誤消息?
>當表單在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');
> adderRormessage ('需要電子郵件');在本示例中,setRequired()方法用於使'電子郵件'表單元素需要,並且AdderRormessage()方法用於為其設置自定義錯誤消息。
>以上是PHP主|設置zend_form_element的自定義錯誤消息的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

在PHP中,應使用password_hash和password_verify函數實現安全的密碼哈希處理,不應使用MD5或SHA1。1)password_hash生成包含鹽值的哈希,增強安全性。 2)password_verify驗證密碼,通過比較哈希值確保安全。 3)MD5和SHA1易受攻擊且缺乏鹽值,不適合現代密碼安全。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

HTTP請求方法包括GET、POST、PUT和DELETE,分別用於獲取、提交、更新和刪除資源。 1.GET方法用於獲取資源,適用於讀取操作。 2.POST方法用於提交數據,常用於創建新資源。 3.PUT方法用於更新資源,適用於完整更新。 4.DELETE方法用於刪除資源,適用於刪除操作。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

在PHPOOP中,self::引用當前類,parent::引用父類,static::用於晚靜態綁定。 1.self::用於靜態方法和常量調用,但不支持晚靜態綁定。 2.parent::用於子類調用父類方法,無法訪問私有方法。 3.static::支持晚靜態綁定,適用於繼承和多態,但可能影響代碼可讀性。

PHP通過$\_FILES變量處理文件上傳,確保安全性的方法包括:1.檢查上傳錯誤,2.驗證文件類型和大小,3.防止文件覆蓋,4.移動文件到永久存儲位置。

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。
