CakePHP est un framework d'application Web PHP populaire. Il fournit de nombreux outils et fonctions puissants pour simplifier le processus de développement Web. La validation des formulaires est une étape nécessaire lors du développement de formulaires. Cet article explique comment utiliser la validation de formulaire dans CakePHP.
La validation de formulaire de CakePHP est un système de validation puissant qui peut nous aider à protéger nos applications en empêchant les utilisateurs malveillants de soumettre des données malveillantes. Il nous permet de définir un ensemble de règles de validation et de vérifier si les données du formulaire sont conformes à ces règles. Si les données soumises ne sont pas valides, CakePHP fournira un message d'erreur approprié.
Tout d'abord, nous devons créer un modèle utilisateur. Nous pouvons créer ce modèle à l'aide d'une commande fournie par CakePHP :
$ bin/cake bake model User
Cela créera un modèle nommé "Utilisateur" dans notre application et créera une table correspondante dans la base de données.
Ensuite, nous devons définir un ensemble de règles de validation dans ce modèle. Nous pouvons utiliser la méthode "validationDefault" dans le modèle User pour définir ces règles. Cette méthode doit renvoyer un tableau contenant un ensemble de propriétés et les règles de validation correspondantes.
// 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; } }
Dans le code ci-dessus, nous définissons les règles de validation : nom d'utilisateur et mot de passe ne peuvent pas être vides, le mot de passe doit contenir au moins 8 caractères, le prénom et le nom ne peuvent pas être vides, l'email doit être valide. Lorsque les données du formulaire ne respectent pas ces règles, CakePHP fournira des messages d'erreur appropriés.
Maintenant, nous devons créer un formulaire dans la vue et le connecter au modèle utilisateur que nous venons de créer. Nous pouvons utiliser le FormHelper fourni par CakePHP pour créer des formulaires. Cet assistant fournit un ensemble de fonctions auxiliaires qui peuvent nous aider à créer rapidement des éléments de formulaire. Tout d'abord, nous devons inclure FormHelper dans le fichier de vue :
// 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() ?>
Dans le code ci-dessus, nous avons utilisé la méthode $this->Form->create($user) pour créer un formulaire et le connecter à $user Le modèle représenté par la variable. Nous avons ensuite utilisé des méthodes $this->Form->input() pour créer des éléments de formulaire tels que des zones de saisie et des listes déroulantes. Enfin, nous créons un bouton de soumission en utilisant la méthode $this->Form->button().
Désormais, lorsque l'utilisateur soumet le formulaire, nous pouvons utiliser le modèle $user dans le contrôleur pour valider les données. Nous pouvons transmettre les données du formulaire à la méthode validate() du modèle et vérifier si la valeur de retour est un tableau vide. Si le tableau renvoyé n'est pas vide, cela signifie que les données du formulaire ne respectent pas les règles de validation que nous venons de définir. Nous pouvons utiliser ce tableau pour afficher des messages d'erreur et rediriger vers la page du formulaire.
// 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); } }
Dans le code ci-dessus, nous créons une entité $newUser et transmettons les données du formulaire à la méthode $this->Users->patchEntity(). Nous essayons ensuite de sauvegarder l'entité dans la base de données en utilisant la méthode $this->Users->save(). Si l'entité est enregistrée avec succès, nous utilisons la méthode $this->Flash->success() pour afficher un message de réussite et rediriger l'utilisateur vers la page de liste des utilisateurs. Sinon, nous utilisons la méthode $this->Flash->error() pour afficher le message d'erreur et rediriger l'utilisateur vers la page du formulaire.
En général, le système de validation de formulaire de CakePHP est un système très puissant et flexible. Il nous permet de définir un ensemble de règles de validation et d'effectuer une validation sur les données du formulaire. Lorsque les données du formulaire ne respectent pas ces règles, CakePHP fournira des messages d'erreur appropriés. En utilisant la validation de formulaire de CakePHP, nous pouvons garantir que notre application dispose de données correctes et sécurisées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!