php - php Zend 框架:設置需要的Zend_Form_Element表單欄位,如何更改用於確保該元素不是空白的確認器

  显示原文与译文双语对照的内容
56 1

使用 Zend_Form 時,驗證輸入是否為空的唯一方法是執行以下操作

$element->setRequired(true);

如果未設置這裡元素,而且元素是空的,則在元素上看上去沒有運行驗證。

如果我使用 setRequired(),那麼元素會自動給出標準的NotEmpty驗證器。問題是,這個驗證器的錯誤消息很糟糕,"值為空,但需要 非空 值"。我想更改這裡消息。現在我已經通過改變 Zend_Validate_NotEmpty 類來完成這個操作,但是這是一個比較複雜的。

我希望能夠使用我自己的類( 從 Zend_Validate_NotEmpty 派生) 來執行非空檢查。

时间:

94 3

我這樣做的方式是( ZF 1.5 ):

$name = new Zend_Form_Element_Text('name');
$name->setLabel('Full Name: ')
 ->setRequired(true)
 ->addFilter('StripTags')
 ->addFilter('StringTrim')
 ->addValidator($MyNotEmpty);

所以 addValidator() 是有趣的部分。消息在"errormessage文件"中設置( 將所有自定義消息打包在一個文件中):

$MyNotEmpty = new Zend_Validate_NotEmpty();
$MyNotEmpty->setMessage($trans->translate('err.IS_EMPTY'),Zend_Validate_NotEmpty::IS_EMPTY);

希望這有幫助。

原作者:
134 1

如果不存在,則 setRequired(true) 將通知 isValid() 添加一個非空驗證( ) 。由於在調用 isValid() 之前不存在這裡驗證,因此無法設置消息。

在調用 isValid() 之前,最簡單的解決方案是手動添加一個非空驗證,並將它的設置為相應的消息。

$username = new Zend_Form_Element_Text('username');
$username->setRequired(true)
 ->addValidator('NotEmpty', true, array('messages' => array('isEmpty' => 'Empty!')));
118 1

添加NotEmpty驗證程序,並添加你自己的消息:

//In the form class:
$username = $this->createElement('text', 'username');
$username->setRequired();//Note that this seems to be required!
$username->addValidator('NotEmpty', true, array(
 'messages' => array(
 'isEmpty' => 'my localized err msg')));

注意:除非在元素上同時調用了,否則NotEmpty驗證程序似乎不會觸發

在控制器( 或者任何地方) 中,調用 $form-> setTranslator ( $yourTranslator ) 以將錯誤消息本地化為頁面。

原作者:
83 2

更改錯誤消息

原作者:
140 2

我可以看到改變了錯誤消息of無法更改特定錯誤的消息。這裡外,該手冊使它看起來像屬於Zend_Form的函數,但在使用Zend_Form實例時找不到方法。

使用的例子是非常有用的。

原作者:
...