2008-08-29 7 views
4

Zend_Formを使用する場合、入力を空白にしないことを検証する唯一の方法はZend Framework:Zend_Form_Elementフォームフィールドを必須に設定する、要素が空でないことを確認するために使用するバリデータを変更する方法

$element->setRequired(true); 

これが設定されておらず、要素が空白の場合、要素に対して検証が実行されないように見えます。

setRequired()を使用すると、要素には標準のNotEmptyバリデータが自動的に与えられます。問題は、このバリデータを使用したエラーメッセージでは、「値は空ですが、空ではない値が必要です」です。私はこのメッセージを変更したい。現時点では、Zend_Validate_NotEmptyクラスを変更することでこれを行っていますが、これはちょっとハッキリです。

私は理想的には、自分のクラス(Zend_Validate_NotEmptyから派生)を使用して、空でないチェックを実行できるようにしたいと考えています。

答えて

3

私はそれをこのように(ZF 1.5)を行いました。メッセージは(すべてのカスタム1つのファイル内のメッセージバンドルする)「にErrorMessageファイル」に設定されている。このことができます

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

希望...デフォルトで

0

私が見る限り、Changing the error messageには特定のエラーのメッセージを変更する方法がありません。 Zend_Formのインスタンスで使用しているときにメソッドが見つかりません。

そして、その使用例は本当に素晴らしいでしょう。

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

ので、addValidator()は興味深い部分である:

3

を、setRequired(真の)はisValid()はに伝えますNonEmpty検証が存在しない場合は追加してください。 isValid()が呼び出されるまでこの検証は存在しないので、メッセージを設定することはできません。

最も簡単な解決策は、isValid()が呼び出される前に手動でNonEmpty検証を手動で追加し、それに応じてメッセージを設定することです。

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

NotEmptyバリデータを追加し、独自のメッセージを追加:上NotEmptyバリデータを使用して、またsetRequired(呼ばれていない限りトリガされていないようです

// 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'))); 

を)素子。

コントローラー(またはどこでも)で、$ form-> setTranslator($ yourTranslator)を呼び出して、エラーメッセージがページに印刷されるときにローカライズします。

関連する問題