ホームページ >PHPフレームワーク >YII >YIIでフォームを操作し、ユーザー入力検証を処理するにはどうすればよいですか?
YIIは、フォームを処理し、ユーザー入力を検証するための堅牢なフレームワークを提供します。コアコンポーネントはyii\widgets\ActiveForm
ウィジェットで、プロセスを大幅に簡素化します。このウィジェットは、モデルの属性とその検証ルールに基づいて、フォームフィールドのHTMLを自動的に生成します。
例で説明しましょう。 ContactForm
モデルがあるとします:
<code class="php"><?php namespace app\models; use yii\base\Model; class ContactForm extends Model { public $name; public $email; public $subject; public $body; public function rules() { return [ [['name', 'email', 'subject', 'body'], 'required'], ['email', 'email'], ]; } }</code></code>
あなたの見解では、このようなActiveForm
使用します。
<code class="php"><?php $form = \yii\widgets\ActiveForm::begin(); ?> = $form->field($model, 'name')->textInput() ?> = $form->field($model, 'email')->textInput() ?> = $form->field($model, 'subject')->textInput() ?> = $form->field($model, 'body')->textarea(['rows' => 6]) ?> <div class="form-group"> = Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?> </div> <?php \yii\widgets\ActiveForm::end(); ?></code>
これにより、各属性の入力フィールドを含むフォームが生成されます。モデルのrules()
メソッドは、検証ルールを定義します。フォームが送信されると、 $model->validate()
これらのルールに対して入力を確認します。検証が失敗した場合、エラーメッセージはそれぞれのフィールドの横に自動的に表示されます。 $model->attributes
を介して検証済みのデータにアクセスできます。コントローラーアクションでフォームの提出を処理することを忘れないでください。
Yiiでフォームを確保するには、いくつかの重要なステップが含まれます。
Html::encode()
関数はあなたの友達です。それを使用して、ユーザー入力から表示するデータでHTML文字をエスケープします。yii\web\CsrfToken
コンポーネントはこれを自動的に処理します。 CSRF保護が自動的に含まれるため、 yii\widgets\ActiveForm
を使用してください。safeAttributes()
メソッドを慎重に定義して、どの属性が大量割り当てされているかを指定します。YIIは、ActiverCordを介してデータベースの相互作用を簡素化します。ユーザー入力を検証した後、ActivereCordのsave()
メソッドを使用してデータをデータベースに保存できます。
データベーステーブルに対応するContact
モデルがあると仮定すると、これを行うことができます。
<code class="php">if ($model->load(Yii::$app->request->post()) && $model->validate()) { if ($model->save()) { // Success! Send a confirmation email, etc. } else { // Handle save errors } }</code>
このコードは、最初に送信されたデータをload()
を使用してモデルにロードします。次に、データを検証します。検証が成功した場合、データをデータベースに保存しようとします。 save()
メソッドは、潜在的なデータベースエラーの処理を含むデータベースインタラクションを処理します。
クライアント側の検証は、即時のフィードバックを提供することにより、ユーザーエクスペリエンスを向上させます。 Yiiは、JQueryなどのJavaScriptフレームワークとシームレスに統合して、これを実現します。 yii\widgets\ActiveForm
モデルのルールに基づいてクライアント側の検証コードを自動的に生成します。
基本的なクライアント側の検証のために多くの追加コードを記述する必要はありません。 ActiveForm
そのほとんどを自動的に処理します。より複雑なシナリオについては、 ActiveForm
ウィジェットのvalidate()
メソッドを使用してカスタムJavaScript関数と統合することにより、クライアント側の検証ロジックをカスタマイズできます。ただし、クライアント側の検証は補足的な尺度と見なされ、堅牢なサーバー側の検証に代わるものではないことを常に覚えておいてください。
以上がYIIでフォームを操作し、ユーザー入力検証を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。