Zend-framework-forms-and-validation
Zend Framework-フォームと検証
Zend Frameworkは、 zend-form という独立したコンポーネントを提供して、フォームの作成と検証プロセスを高速化します。 モデルとビューレイヤーを接続します。 事前定義されたモデルから本格的なhtmlフォームを作成する一連のフォーム要素、フォームに対してモデルを検証する InputFilter クラス、およびフォームからモデルにデータをバインドするオプションを提供します。
フォームコンポーネントのインストール
Zendフォームコンポーネントは、以下に指定されているように Composer コマンドを使用してインストールすることができます-
Zendフォームフレームワークには、フォームを管理するための3つのサブコンポーネントがあります。 それらは以下で詳細に説明されているとおりです-
- 要素-モデルのプロパティにマッピングされた単一のHTML入力コントロールを定義するために使用されます。
- Fieldset -要素および他の fieldset をネストされた方法でグループ化するために使用されます。
- フォーム-HTMLフォームを作成するために使用され、要素とフィールドセットで構成されています。
Zend Formsは通常、 module//src/Form ディレクトリの下に作成されます。
例
ここで、データベースに book を追加する簡単なフォームを作成しましょう。 これを行うには、次の手順に従う必要があります-
ステップ1:BookFormを作成する
- myapp/module/Tutorial/src/Form」ディレクトリの下に「BookForm.php」を作成します。 ファイルに次の変更を追加します-
ステップ2:ブックモデルBook.phpを更新する
以下に指定されているように、フィルターと検証を使用してモデル「*」を更新します-
各モデルは InputFilterAwareInterface を実装する必要があります。 InputFilterAwareInterfaceには、* setInputFilter()と getInputFilter()*の2つのメソッドがあります。
getInputFilterは、モデルの検証の詳細を取得するために使用されます。 Zendフレームワークは、フォームを検証するための豊富なフィルターとバリデーターのセットを提供します。 ブックモデルで使用されるフィルタとバリデータのいくつかは次のとおりです-
- StripTags -不要なHTMLを削除します。
- StringTrim -不要な空白を削除します。
- * StringLengthバリデータ*-ユーザーが指定された制限を超える文字を入力しないようにします。
ステップ3:BookTableクラスを更新する
ステップ4:TutorialControllerクラスを更新する
チュートリアルコントローラーに新しいアクションaddActionを追加します– myapp/module/Tutorial/src/Controller/TutorialController.php。
- リクエストオブジェクトを取得します。
- リクエストのhttpメソッドが post メソッドかどうかを確認します。
- リクエストのhttpメソッドが post でない場合、テンプレート add.phtml をレンダリングするだけです
- リクエストのhttpメソッドが post でない場合、 inputfilter を設定し、リクエストデータを取得してinputfilerに設定します。
- Formクラスの* isValid()*メソッドを使用して、フォームが有効かどうかを確認します。
- フォームが無効な場合、テンプレート add.phtml を再度レンダリングします
- フォームが有効な場合、ブックをデータベースに保存し、ホームページにリダイレクトします。
ステップ5:add.phtmlテンプレートを追加する
テンプレートを作成します– myapp/module/Tutorial/view/tutorial/tutorial/add.phtmlの下にあるadd.phtml
ここでは、 Form インスタンス _ $ form_ を使用してブックフォームをレンダリングしています。
ステップ6:アプリケーションを実行する
これで、アプリケーションを実行できます- http://localhost:8080/tutorial/add 。
フォームページ
エラーページの検証