PHPマスター| zend_form_elementのカスタムエラーメッセージの設定
キーテイクアウト
- Zendフレームワークに基づいて英語以外のWebサイトまたはアプリケーションを作成する場合、開発者はしばしばZend_Formのフィールド(Zend_form_Element)のフィールドを無効で表示し、カスタムエラーメッセージを表示することに苦労します。これは主に、Zend_form_Elementクラスのネイティブなカウンター直感に反する方法によるものです。 アメリカの会社Zendが所有するZend Frameworkのデフォルト動作は、ユーザー入力によって壊れたすべてのバリッターごとに英語でエラーメッセージを表示することです。開発者は、フレームワークのすべてのエラーメッセージを翻訳するか、入力が無効であることを1つ以上のメッセージで説明し、受け入れられた値を挿入するための提案を表示できます。後者のオプションは、特に中小規模のプロジェクトでは、それほど複雑ではありません。
- この問題の解決策は、フォーム内のフィールド(init()メソッド)内のフィールドの作成と、breakchainonfailure()と呼ばれるZendフレームワークのバリデーターのプロパティと併せて、setErrormessages()メソッドの使用にあります。このプロパティにより、検証プロセスは最初の故障状態で停止できます。このアプローチにより、フォームは、無効な入力があるときにカスタムメッセージのみを表示できます。
例の開発
異なるフィールドを持つフォームがあり、そのうちの1つだけを考慮に入れているとしましょう。たとえば、ユーザーが自分の名前を入力できるようにするために使用されるテキスト入力フィールドです。使用できるバリデーターは異なりますが、例のために名前の長さを制限し、アルファベットのある文字とスペースのみを許可します。 Zend Framework言語について言えば、それぞれZend_Validate_StringLengthとZend_Validate_Alphaクラスを使用します。 すでにご存知かもしれませんが、Zend FrameworkはAmerican Company Zendが所有しているため、表示されるすべてのメッセージは英語です。フレームワークのデフォルトの動作は、ユーザー入力によって破られたすべてのバリーターに1つ以上のエラーメッセージを表示することです。したがって、英語以外のWebサイトを構築している人のために、すべてのユーザーが読み取り可能なメッセージを持つための2つのオプションがあります。フレームワークのすべてのエラーメッセージを翻訳するか、入力が無効であることを1つ以上のメッセージで説明し、挿入する提案を表示する受け入れられた価値。最初のオプションは、特に中小規模のプロジェクトの場合は過剰に複雑です。そのため、2番目のオプションの使用方法を示します。 簡単に保つために、単一のカスタムメッセージを設定します。「入力は無効です。値にはアルファベットの文字とスペースのみが必要であり、その長さは3〜50文字でなければなりません。」コード
記事中に使用するコードを表示します。まず、これは、データを確認するために必要な名前の入力フィールドとバリエーターを含むフォームです。<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>
<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>
- setErrors(配列$メッセージ)
- setErrormessages(array $ messages)
<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>
<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>
<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>
ソリューションを明らかにします
さて、ポイントは、とのときにを理解することです カスタムメッセージを挿入して、ユーザーが比較し、どの値が受け入れられているかについての提案をすることができます。間違いなく、フォーム内(init()メソッド)内のフィールドの作成にあるとき、およびsetErrormessages()メソッドの結合と、breakchainonfailure()と呼ばれるZendフレームワークのバリッタのプロパティの使用による方法。後者を使用すると、最初の失敗した状態で検証プロセスを停止できます。 5つのバリデーターをセットアップして最初のバリエーターが失敗した場合、他の4つは使用されません。 可能な限り少ないコード行を使用してこのプロパティを使用するために、最初に説明したコードを少し変更します。 setErrormessages()メソッドを使用するコード行をinit()メソッドに追加し、配列を期待するsetvalidators()によって受け入れられた可能な入力構成の1つを利用します。メインの配列に含まれる配列には、最大3つのパラメーターを持つことができます。- babyatorをユーザーに指定する文字列(必須)
- ブール(オプション、デフォルトでは値は偽です)。フレームワークが最初の障害で検証を破らなければならないかどうかを指定します。したがって、このパラメーターは、プロパティBreakChainOnFailureの値を設定します。これは、目標を達成するのに役立つものです。 選択されたバリデーターごとに異なるオプション(オプション、デフォルトでは空の配列)の配列
- 使用したいバリデーターごとにtrueとして渡された2番目のパラメーターを使用することが不可欠です。 これまで見たことによると、結果のコードは次のとおりです。
<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>
上記のコードを使用すると、フォームは、無効な入力がある場合にカスタムメッセージのみが表示されます。いくつかの段階での提案など、より多くのメッセージを使用する必要がある場合は、SetErrormessages()メソッドに使用される配列に文字列を追加するだけです。 Fotoliaを介した画像
Zend Form Elementのカスタムエラーメッセージの設定に関するよくある質問(FAQ) Zendの特定のフォーム要素のエラーメッセージをカスタマイズするには、Zendの特定のフォーム要素のエラーメッセージをカスタマイズするのは非常に簡単です。 setMessage()メソッドを使用して、特定のバリーターにカスタムエラーメッセージを設定できます。たとえば、「電子メール」という名前のフォーム要素があり、そのためにカスタムエラーメッセージを設定する場合、次のようにすることができます。 🎜> $ email-> setLabel( '電子メールアドレス')- > addvalidator( 'notempty'、true)
- > addvalidator( 'emailaddress');$ email-> getValidator( 'notempty') - > setMessage( 'メールアドレスを入力してください');
この例では、setMessage()メソッドが使用されます「電子メール」フォーム要素の「notempty」バリッターのカスタムエラーメッセージを設定します。 zend?
Zendのフォーム要素の複数のカスタムエラーメッセージを設定する場合は、setMessages()メソッドを使用できます。この方法は、エラーメッセージの配列を受け入れます。例は次のとおりです。
$ email = new zend_form_element_text( 'email');
$ email-> setlabel( 'emailアドレス')
- > addvalidator( 'notempty'、true)
- > addValidator( 'EmailAddress');
$ email-> getValidator( 'notempty') - > setMessages(array(
zend_validate_emailaddress:: :invalid => '有効な電子メールアドレス'
));inを入力してくださいこの例、setMessages()メソッドは、「電子メール」フォーム要素の「notempty」バリーターの複数のカスタムエラーメッセージを設定するために使用されます。
フォームがZendで検証に失敗したときにカスタムエラーメッセージを表示するにはどうすればよいですか?
フォームが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。このメソッドを使用すると、特定のバリーターにカスタムエラーメッセージを設定できます。例は次のとおりです。
$ email = new zend_form_element_text( 'email');
$ email-> setlabel( 'emailアドレス') - > 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(true)
- > adderRormessage ( '電子メールが必須');この例では、setRequired()メソッドを使用して「電子メール」フォーム要素を必要とし、 adderRormessage()メソッドは、カスタムエラーメッセージを設定するために使用されます。
以上がPHPマスター| zend_form_elementのカスタムエラーメッセージの設定の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
