CakePHP ist ein beliebtes PHP-Webanwendungs-Framework. Es bietet viele leistungsstarke Tools und Funktionen, um den Prozess der Webentwicklung zu vereinfachen. Die Formularvalidierung ist ein notwendiger Schritt bei der Entwicklung von Formularen. In diesem Artikel wird die Verwendung der Formularvalidierung in CakePHP vorgestellt.
Die Formularvalidierung von CakePHP ist ein leistungsstarkes Validierungssystem, das uns dabei helfen kann, böswillige Benutzer daran zu hindern, bösartige Daten zu übermitteln, und so unsere Anwendungen schützen. Es ermöglicht uns, eine Reihe von Validierungsregeln zu definieren und zu prüfen, ob die Formulardaten diesen Regeln entsprechen. Wenn die übermittelten Daten ungültig sind, gibt CakePHP eine entsprechende Fehlermeldung aus.
Zuerst müssen wir ein Benutzermodell erstellen. Wir können dieses Modell mit einem von CakePHP bereitgestellten Befehl erstellen:
$ bin/cake bake model User
Dadurch wird in unserer Anwendung ein Modell mit dem Namen „Benutzer“ erstellt und eine entsprechende Tabelle in der Datenbank erstellt.
Als nächstes müssen wir in diesem Modell eine Reihe von Validierungsregeln definieren. Wir können die Methode „validationDefault“ im Benutzermodell verwenden, um diese Regeln zu definieren. Diese Methode sollte ein Array zurückgeben, das eine Reihe von Eigenschaften und entsprechende Validierungsregeln enthält.
// 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; } }
Im obigen Code definieren wir die Validierungsregeln: Benutzername und Passwort dürfen nicht leer sein, Passwort muss mindestens 8 Zeichen enthalten, Vor- und Nachname dürfen nicht leer sein, E-Mail muss gültig sein. Wenn Formulardaten diesen Regeln nicht entsprechen, stellt CakePHP entsprechende Fehlermeldungen bereit.
Jetzt müssen wir ein Formular in der Ansicht erstellen und es mit dem gerade erstellten Benutzermodell verbinden. Wir können den von CakePHP bereitgestellten FormHelper verwenden, um Formulare zu erstellen. Dieser Helfer stellt eine Reihe von Hilfsfunktionen bereit, mit denen wir schnell Formularelemente erstellen können. Zuerst müssen wir den FormHelper in die Ansichtsdatei einbinden:
// 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() ?>
Im obigen Code haben wir die Methode $this->Form->create($user) verwendet, um ein Formular zu erstellen. und verbinden Sie es mit dem Modell, das durch die Variable $user dargestellt wird. Anschließend haben wir einige $this->Form->input()-Methoden verwendet, um Formularelemente wie Eingabefelder und Dropdown-Listen zu erstellen. Schließlich erstellen wir mit der Methode $this->Form->button() eine Schaltfläche zum Senden.
Wenn der Benutzer nun das Formular absendet, können wir das $user-Modell im Controller verwenden, um die Daten zu validieren. Wir können die Formulardaten an die Methode „validate()“ des Modells übergeben und prüfen, ob der Rückgabewert ein leeres Array ist. Wenn das zurückgegebene Array nicht leer ist, bedeutet dies, dass die Formulardaten nicht den soeben definierten Validierungsregeln entsprechen. Mit diesem Array können wir Fehlermeldungen anzeigen und zur Formularseite zurückleiten.
// 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); } }
Im obigen Code erstellen wir eine $newUser-Entität und übergeben die Formulardaten an die Methode $this->Users->patchEntity(). Anschließend versuchen wir, die Entität mit der Methode $this->Users->save() in der Datenbank zu speichern. Wenn die Entität erfolgreich gespeichert wurde, verwenden wir die Methode $this->Flash->success(), um eine Erfolgsmeldung anzuzeigen und den Benutzer zur Benutzerlistenseite weiterzuleiten. Andernfalls verwenden wir die Methode $this->Flash->error(), um die Fehlermeldung anzuzeigen und den Benutzer zurück zur Formularseite umzuleiten.
Insgesamt ist das Formularvalidierungssystem von CakePHP ein sehr leistungsfähiges und flexibles System. Es ermöglicht uns, eine Reihe von Validierungsregeln zu definieren und eine Validierung der Formulardaten durchzuführen. Wenn Formulardaten diesen Regeln nicht entsprechen, stellt CakePHP entsprechende Fehlermeldungen bereit. Durch die Verwendung der Formularvalidierung von CakePHP können wir sicherstellen, dass unsere Anwendung über korrekte und sichere Daten verfügt.
Das obige ist der detaillierte Inhalt vonWie verwende ich die Formularvalidierung in CakePHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!