ホームページ >バックエンド開発 >PHPチュートリアル >PHPマスター| zend_form_elementのカスタムエラーメッセージの設定
<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>コントローラーでは、フィールドが有効かどうかを確認し、それに応じて動作します。通常、IndexControllerを使用せず、おそらく特定のコントローラーでこの検証があります。とにかく、例を簡素化するために、私はそれを使用します。
<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>CSSルールなしの上記のソースコードは、次のようにレンダリングされます。
<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>この方法は、指定された文字列を表示するだけでなく、フィールドを無効とマークします。 アプリケーションロジックで2回使用できますが、両方で目標に役立たない動作があります。 1つ目は、フォーム要素(init()メソッド)の作成中です。この場合、フォームがロードされたときとユーザーがデータを挿入する前にメッセージが表示されます。非常に不快。この場合、このようなコードの関連部分は次のとおりです。
<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>2回目は、コントローラー内の通常のデータ検証中に情報が送信された後に発生します。何が起こるかは、エラーが発生したときにカスタムメッセージがデフォルトのメッセージに追加されることです。この場合、インデックスコントローラーのindexaction()がこの方法で変更されます。
<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>// 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>このコード行はまだ問題を解決しませんbeucaseは、満足していない状態ごとに同じエラーメッセージが表示されるか、効果がありません。表示されている行がinit()メソッドで使用されている場合、seterrors()に表示されるのと同じ方法で、エラーの場合、カスタムメッセージはユーザー入力によって違反される条件の数と同じくらい数倍表示されます。コントローラー内の通常のデータ検証中にラインが挿入された場合、前に説明したのと同じように、効果はありません。これは、カスタムメッセージが表示されず、フレームワークにデフォルトのメッセージのみが表示されることを意味します。
<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>結論
Zendのフォーム要素の複数のカスタムエラーメッセージを設定する場合は、setMessages()メソッドを使用できます。この方法は、エラーメッセージの配列を受け入れます。例は次のとおりです。
$ email = new zend_form_element_text( 'email');
$ email-> setlabel( 'emailアドレス')
- > addvalidator( 'notempty'、true)
- > addValidator( 'EmailAddress');
$ email-> getValidator( 'notempty') - > setMessages(array(
inを入力してくださいこの例、setMessages()メソッドは、「電子メール」フォーム要素の「notempty」バリーターの複数のカスタムエラーメッセージを設定するために使用されます。
フォームがZendで検証に失敗した場合、Adderror()メソッドを使用してカスタムエラーメッセージを表示できます。このメソッドは、フォームが検証に失敗したときに表示されるエラーメッセージを追加します。例は次のとおりです。
$ form = new zend_form();
$ form-> addelement( 'text'、 'email'、array(
'validators' => array(
>> array) array( 'validator' => 'notempty'、 'options' => array( 'message' => 'emailが必須'))、
array( 'validator' => 'emailAddress'、 'options' => array( 'message' => '無効な電子メールアドレス'))
)
));
if(!$ form-> isvalid($ _ post)){
$ form-> adderror( '提出にエラーがありました。それらを修正してもう一度やり直してください。');
}
この例では、adderror()メソッドは、フォームが検証に失敗したときに表示されるカスタムエラーメッセージを追加するために使用されます。 setMessage()メソッドを使用してZend。このメソッドを使用すると、特定のバリーターにカスタムエラーメッセージを設定できます。例は次のとおりです。
- > addvalidator( 'notempty'、true)
- > addValidator( 'EmailAddress');
$ email-> getValidator( 'notempty') - > setMessage( 'を入力してくださいあなたのメールアドレス ');
$ email-> getValidator(' EmailAddress ') - > setMessage('有効な電子メールアドレスを入力してください);
この例では、setMessage()メソッドを使用して変更します。 「notempty」および「emailAddress」フォーム要素の「notempty」および「emailAddress」の有効化者のデフォルトエラーメッセージ。 zend?
フォーム要素がZendに必要な場合は、setRequired()およびadderRormessage()メソッドを使用して、カスタムエラーメッセージを設定できます。例は次のとおりです。
$ email = new zend_form_element_text( 'email');
この例では、setRequired()メソッドを使用して「電子メール」フォーム要素を必要とし、 adderRormessage()メソッドは、カスタムエラーメッセージを設定するために使用されます。
以上がPHPマスター| zend_form_elementのカスタムエラーメッセージの設定の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。