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)

ホットトピック











PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。
