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 = $this->Form->create($user) ?> = $this->Form->input('username') ?> = $this->Form->input('password') ?> = $this->Form->input('first_name') ?> = $this->Form->input('last_name') ?> = $this->Form->input('email') ?> = $this->Form->button(__('Submit')) ?> = $this->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 サイトの他の関連記事を参照してください。