CakePHP でフォーム検証を使用するにはどうすればよいですか?

WBOY
リリース: 2023-06-04 17:42:02
オリジナル
1148 人が閲覧しました

CakePHP は、人気のある PHP Web アプリケーション フレームワークです。 Web 開発プロセスを簡素化するための多くの強力なツールと機能を提供します。フォームの検証は、フォームを開発するときに必要な手順です。この記事では、CakePHP でフォームバリデーションを使用する方法を紹介します。

CakePHP のフォーム検証は、悪意のあるユーザーによる悪意のあるデータの送信を防ぎ、アプリケーションを保護するのに役立つ強力な検証システムです。これにより、一連の検証ルールを定義し、フォーム データがこれらのルールに準拠しているかどうかを確認できます。送信されたデータが無効な場合、CakePHP は適切なエラー メッセージを表示します。

まず、ユーザー モデルを作成する必要があります。このモデルは、CakePHP が提供するコマンドを使用して作成できます。

$ bin/cake bake model User
ログイン後にコピー

これにより、アプリケーション内に「User」という名前のモデルが作成され、データベース内に対応するテーブルが作成されます。

次に、このモデルで一連の検証ルールを定義する必要があります。 User モデルの「validationDefault」メソッドを使用して、これらのルールを定義できます。このメソッドは、一連のプロパティと対応する検証ルールを含む配列を返す必要があります。

// src/Model/Entity/User.php namespace AppModelEntity; use CakeORMEntity; class User extends Entity { protected $_accessible = [ '*' => true, 'id' => false, ]; protected function _setPassword($password) { return (new DefaultPasswordHasher)->hash($password); } protected function _getFullName() { return $this->_properties['first_name'] . ' ' . $this->_properties['last_name']; } protected function _getAge() { $now = new DateTime(); $birthDate = new DateTime($this->_properties['birth_date']); return $now->diff($birthDate)->y; } protected function _setAge($age) { $this->_properties['birth_date'] = (new DateTime("-$age years"))->format('Y-m-d'); return $age; } protected function _validationDefault(Validator $validator) { $validator ->notEmpty('username', 'A username is required') ->notEmpty('password', 'A password is required') ->add('password', [ 'length' => [ 'rule' => ['minLength', 8], 'message' => 'Password must be at least 8 characters long', ] ]) ->notEmpty('first_name', 'A first name is required') ->notEmpty('last_name', 'A last name is required') ->add('email', 'valid-email', [ 'rule' => 'email', 'message' => 'Please enter a valid email address' ]); return $validator; } }
ログイン後にコピー

上記のコードでは、ユーザー名とパスワードを空にすることはできず、パスワードには少なくとも 8 文字が含まれている必要があり、姓と名は空にすることはできず、電子メールは有効である必要があるという検証ルールを定義します。フォームデータがこれらのルールに準拠していない場合、CakePHP は適切なエラーメッセージを表示します。

次に、ビュー内にフォームを作成し、作成したばかりのユーザー モデルに接続する必要があります。 CakePHP が提供する FormHelper を使用してフォームを作成できます。このヘルパーは、フォーム要素を迅速に作成するのに役立つ一連の補助関数を提供します。まず、ビュー ファイルに FormHelper を含める必要があります。

// src/Template/Users/add.ctp Form->create($user) ?> Form->input('username') ?> Form->input('password') ?> Form->input('first_name') ?> Form->input('last_name') ?> Form->input('email') ?> Form->button(__('Submit')) ?> Form->end() ?>
ログイン後にコピー

上記のコードでは、$this->Form->create($user) メソッドを使用してフォームを作成し、追加しました。 $user 変数で表されるモデルに接続します。次に、いくつかの $this->Form->input() メソッドを使用して、入力ボックスやドロップダウン リストなどのフォーム要素を作成しました。最後に、$this->Form->button() メソッドを使用して送信ボタンを作成します。

これで、ユーザーがフォームを送信すると、コントローラーで $user モデルを使用してデータを検証できるようになります。フォーム データをモデルの validate() メソッドに渡し、戻り値が空の配列かどうかを確認できます。返された配列が空でない場合は、フォーム データが定義した検証ルールに準拠していないことを意味します。この配列を使用してエラー メッセージを表示し、フォーム ページにリダイレクトできます。

// src/Controller/UsersController.php namespace AppController; use CakeORMTableRegistry; class UsersController extends AppController { public function add() { $user = $this->Users->newEntity(); if ($this->request->is('post')) { $user = $this->Users->patchEntity($user, $this->request->getData()); if ($this->Users->save($user)) { $this->Flash->success(__('The user has been saved.')); return $this->redirect(['action' => 'index']); } $this->Flash->error(__('Unable to add the user.')); } $this->set('user', $user); } }
ログイン後にコピー

上記のコードでは、$newUser エンティティを作成し、フォーム データを $this->Users->patchEntity() メソッドに渡します。次に、$this->Users->save() メソッドを使用してエンティティをデータベースに保存しようとします。エンティティが正常に保存された場合は、$this->Flash->success() メソッドを使用して成功メッセージを表示し、ユーザーをユーザー リスト ページにリダイレクトします。それ以外の場合は、$this->Flash->error() メソッドを使用してエラー メッセージを表示し、ユーザーをフォーム ページにリダイレクトします。

一般に、CakePHP のフォーム検証システムは非常に強力で柔軟なシステムです。これにより、一連の検証ルールを定義し、フォーム データの検証を実行できるようになります。フォームデータがこれらのルールに準拠していない場合、CakePHP は適切なエラーメッセージを表示します。 CakePHP のフォーム検証を使用すると、アプリケーションに正しく安全なデータが含まれていることを確認できます。

以上がCakePHP でフォーム検証を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!