26

次のようなテキスト要素を作成するとします。

$firstName = new Zend_Form_Element_Text('firstName');
$firstName->setRequired(true);

デフォルトのエラー メッセージを変更する最良の方法は次のとおりです。

値が空ですが、空でない値が必要です

カスタムメッセージに? メッセージを置き換えるには、次のように addValidator(...,代わりに (NO setRequired)を使用することをどこかで読みました。

$firstName = new Zend_Form_Element_Text('firstName');
$firstName->addValidator('NotEmpty', false, array('messages'=>'Cannot be empty'));

しかし、私のテストでは、これは機能しません-まったく検証されません-空のテキストフィールドで合格します。両方 (addValidator('NotEmp.. + setRequired(true))) を同時に使用しても機能しません。二重に検証され、2 つのエラー メッセージが表示されます。

何か案は?

ありがとう!

4

10 に答える 10

19

これを「サイト全体」に設定する簡単な方法は、ブートストラップまたはベース zend_controller で次のことを行うことです。

<?php    
$translateValidators = array(
                        Zend_Validate_NotEmpty::IS_EMPTY => 'Value must be entered',
                        Zend_Validate_Regex::NOT_MATCH => 'Invalid value entered',
                        Zend_Validate_StringLength::TOO_SHORT => 'Value cannot be less than %min% characters',
                        Zend_Validate_StringLength::TOO_LONG => 'Value cannot be longer than %max% characters',
                        Zend_Validate_EmailAddress::INVALID => 'Invalid e-mail address'
                    );
    $translator = new Zend_Translate('array', $translateValidators);
    Zend_Validate_Abstract::setDefaultTranslator($translator);
?>
于 2009-01-20T18:25:25.393 に答える
16

これを試してみてください:

$firstName = new Zend_Form_Element_Text('firstName');
$firstName->setLabel('First Name')
          ->setRequired(true)
          ->addValidator('NotEmpty', true)
          ->addErrorMessage('Value is empty, but a non-empty value is required.');

重要なのは、バリデーターで「true」を設定すると、それ以降の他の検証が強制終了されることです。複数の検証メソッドを追加して false に設定すると、すべてのメソッドが検証されます。

于 2009-01-20T02:30:28.317 に答える
10

Zend_Form は必要な検証エラーを 'isEmpty' に設定するので、setErrorMessages() を使用してそのメッセージをオーバーライドできます。例えば:

//Your Required Element
$element->setRequired(true)->setErrorMessages(array(
'isEmpty'=>'Please fill this field'
));

ZF 1.11を使用して、私にとってはうまくいきました

于 2012-11-14T04:58:10.700 に答える
9

試す

->addValidator('Digits', false);

また

->addValidator('Digits');

Digits をチェックするには、とにかく文字列の長さが必要であると想定します。

また、次のようなカスタム エラー メッセージを表示するのも好きです。

$firstName->getValidator('NotEmpty')->setMessage('Please enter your first name');

これにより、バリデータを「取得」してから、そのプロパティを「設定」できます。

于 2009-01-20T02:58:32.783 に答える
5

次のことを試してください。

$subjectElement->setRequired(true)->addErrorMessage('Please enter a subject for your message');

これは私からうまくいきました。

于 2009-08-12T09:33:35.700 に答える
1

しかし、これを試してください:

$firstName->setRequired(true)
          ->addValidator('NotEmpty', false, array('messages' => 'bar'))
          ->addValidator('Alpha', false, array('messages'=>'Must contain only letters'));

空のまま送信すると、バー& ' ' is an empty string という2 つのメッセージが表示されます。setRequired(true) からの 2 番目のメッセージが問題です

于 2009-01-20T18:20:41.863 に答える
1

あなたが置く場合:

$element->setRequired(false);

検証はまったく機能しません。次を定義する必要があります。

$element->setAllowEmpty(false);

検証の正しい動作を得るために。

于 2010-08-11T13:30:15.913 に答える
1

これを試して..

$ausPostcode = new Zend_Form_Element_Text('aus_postcode'); $ausPostcode->setLabel('Australian Postcode')
->setRequired(true)
->addValidator('StringLength', false, array(4, 4))
->addValidator(new Zend_Validate_Digits(), false)
->getValidator('digits')->setMessage('Postcode can only contain digits');

これにより、Digits バリデータのみにカスタム エラー メッセージが設定されます。

于 2009-10-26T04:07:06.150 に答える
0

の zend_validate.php でzendトランスレータを使用します。

ZendFramework-1.11.3\resources\languages\en\Zend_Validate.php and then modify this file how you need

必要に応じて変更します

于 2011-03-22T12:03:40.330 に答える
0

1 つの小さな問題。このコード:

$zipCode->setLabel('Postal Code')
        ->addValidator('StringLength', true, array( 5, 5 ) )
        ->addErrorMessage('More than 5')
        ->addValidator('Digits', true)
        ->addErrorMessage('Not a digit');

いずれかの検証が失敗した場合、両方のエラー メッセージが生成されます。最初に失敗した後に停止することになっていませんか?

于 2009-01-20T02:49:29.527 に答える