Zend_Form組件實現表單提交並顯示錯誤提示的方法

來源:互聯網
上載者:User
這篇文章主要介紹了Zend_Form組件實現表單提交並顯示錯誤提示的方法,結合執行個體形式詳細分析了Zend_Form組件的使用方法與實現表單提交的具體操作步驟,需要的朋友可以參考下

本文執行個體講述了Zend Framework教程之Zend_Form組件實現表單提交並顯示錯誤提示的方法。分享給大家供大家參考,具體如下:

同時公司又要開發一個群組功能..我也就想運用一下Zend_Form來實現建立群組的功能.主要還是看中Zend_Form可以在寫Form時候.實現伺服器端的驗證功能..省得我們在把資料提交到資料庫的時候再驗證一次..所以呢.我就看了一下這方面的手冊..通過Zend Framework手冊找到了相關的使用說明...最簡單的使用方式就是在控制器(Controller)裡寫一個現成的Action,這樣..在這個控制器裡就可以直接使用這個Action...代碼可以如下:

<?phppublic function formAction() {$form=new Zend_Form();$form->setName('group');$title = new Zend_Form_Element_Select('title');$title ->setLabel('性別') ->setMultiOptions(array('mr'=>'Mr', 'mrs'=>'Mrs')) ->setRequired(true) ->addValidator('NotEmpty', true);$yourName = new Zend_Form_Element_Text('firstName');$yourName->setLabel('姓名') ->setRequired(true) ->addValidator('NotEmpty', true) ;$email = new Zend_Form_Element_Text('email');$email->setLabel('電子郵件地址') ->addFilter('StringToLower') ->setRequired(false) ->addValidator('NotEmpty');$submit = new Zend_Form_Element_Submit('submit');$submit->setLabel('group');$form->addElements(array($title, $yourName,$email,$submit));}?>

當然..我也可以把這個Form專門寫成一個類...存放在一個forms共同的目錄下.這樣就方便我們管理我們所有的Form表單..我的實現方式就是把它放在和控制器(Controller)的同一層級的目錄下...這樣管理起來也方便..當然不同的朋友..有不同的想法...另一種方式..就是可以把它寫成View Helper...這個方式實現起來,,也很方便..這裡我就不想多寫了...Zend Framework實現起來很方便...只要你想的到...無論你怎樣完成你的任務,,都是可以的..在這裡我就不多說其它的...我只想談一下怎樣讓Zend_Form實現中文的提示資訊功能...我這裡有二種方法..

第一:比較笨的方式就是:如果你的網站不要做成多國語言的網站..同時你的Zend Framework版本不是經常更換的話...你就可以找到相關提示資訊的源碼...更改成中文的提示.

這個笨方法..實在是沒有辦法的辦法...呵呵...

第二:我也是在英文站...看到的一個比較好的方式,就是通過重寫這個提示資訊.把它換成我們想要的語言...這樣...就算我們會去換語言..或是換Zend Framework的版本..

對我們的影響也不是很大...我們只要更改一下我們的Form的表單就可以搞定了..現在這種方式的代碼如下(我這裡唯寫了Email提示資訊..其它的不要多寫出):

<?php$email = new Zend_Form_Element_Text('email');$email->setLabel('電子郵件地址') ->addFilter('StringToLower') ->setRequired(false) ->addValidator('NotEmpty') ->addValidator('EmailAddress',true,array('messages' => array( 'emailAddressInvalid' => '這不是一個可用的電子郵件!', 'emailAddressInvalidHostname' => '這不是一個有效主機名稱!', 'emailAddressInvalidMxRecord' => '這不是一個有效電子郵件地址!', 'emailAddressDotAtom' => '這不是一個有效電子郵件地址!', 'emailAddressQuotedString' => '這不是一個有效電子郵件地址!', 'emailAddressInvalidLocalPart' => '這不是一個有效電子郵件地址!',))); ?>

到這裡..Zend_Form這個組件還有一個比較重要的功能..就是Zend_Form_Decorator..手冊上稱為裝飾器,也就是說你可以自己寫你想要的裝飾器..比如說..你要把你的Form用Table包含起來..我們要怎樣實現呢?這個時候..我們就要用到比如說HtmlTag,Label這些裝飾器來達到我們想要的功能...這裡是一個比較重要的概念了..有興趣的朋友可以去去看一下...因為如果你想要用Zend_Form這個組件..不會裝飾器因該用起來會很困難..所以必須要會這個東西..才可以建立你自己想要的表單功能..最後..就是一點裝飾器的小運用

我只是實現一個小的功能...如下代碼:

<?php$email = new Zend_Form_Element_Text('email');$email->setLabel('電子郵件地址') ->addFilter('StringToLower') ->setRequired(false) //利用裝飾器來增加td標籤->addDecorator('HtmlTag', array('tag' => 'td')) ->addDecorator('Label', array('tag' => 'td')) //重複利用HtmlTag裝飾器來增加tr標籤->addDecorator(array('FooTr' => 'HtmlTag'), array('tag' => 'tr')) ->addValidator('NotEmpty');?>

哈哈....大致的運用就是這樣了...最後..就是驗證提交的資料了...看如何驗檢驗使用者提交的資料....這裡就不多說了...OK...

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.