CakePHP créant des validateurs

PHPz
Libérer: 2024-09-10 17:26:58
original
558 Les gens l'ont consulté

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

use Cake\Validation\Validator;
$validator = new Validator();
Copier après la connexion

Validation des données

Une fois que nous avons créé le validateur, nous pouvons utiliser l'objet validateur pour valider les données. Le code suivant explique comment nous pouvons valider les données pour la page Web de connexion.

$validator->notEmpty('username', 'We need username.')->add(
   'username', 'validFormat', ['rule' => 'email','message' => 'E-mail must be valid']);

$validator->notEmpty('password', 'We need password.');
$errors = $validator->errors($this->request->data());
Copier après la connexion

A l'aide de l'objet $validator, nous avons d'abord appelé la méthode notEmpty(), qui garantira que le nom d'utilisateur ne doit pas être vide. Après cela, nous avons enchaîné la méthode add() pour ajouter une validation supplémentaire pour le format d'e-mail approprié.

Après cela, nous avons ajouté la validation du champ de mot de passe avec la méthode notEmpty(), qui confirmera que le champ de mot de passe ne doit pas être vide.

Exemple

Apportez des modifications au fichier config/routes.php comme indiqué dans le programme suivant.

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('validation',['controller'=>'Valids','action'=>'index']);
   $builder->fallbacks();
});
Copier après la connexion

Créez un fichier ValidsController.php dans src/Controller/ValidsController.php. Copiez le code suivant dans le fichier du contrôleur.

src/Controller/ValidsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\Validation\Validator;
   class ValidsController extends AppController{
      public function index(){
         $validator = new Validator();
         $validator->notEmpty('username', 'We need username.')->add(
            'username', 'validFormat', ['rule' => 'email','message' => 'E-mail must be valid']);
         $validator->notEmpty('password', 'We need password.');
         $errors = $validator->errors($this->request->getData());
         $this->set('errors',$errors);
      }
   }
?>
Copier après la connexion

Créez un répertoire Valids dans src/Template et sous ce répertoire, créez un fichier View appelé index.php. Copiez le code suivant dans ce fichier.

src/Template/Valids/index.php

<?php
   if($errors) {
      foreach($errors as $error)
      foreach($error as $msg)
      echo '<font color="red">'.$msg.'</font><br>';
   } else {
      echo "No errors.";
   }
   echo $this->Form->create(NULL,array('url'=>'/validation'));
   echo $this->Form->control('username');
   echo $this->Form->control('password');
   echo $this->Form->button('Submit');
   echo $this->Form->end();
?>
Copier après la connexion

Exécutez l'exemple ci-dessus en visitant l'URL suivante −

http://localhost/cakephp4/validation

Sortie

Cliquez sur le bouton Soumettre sans rien saisir. Vous recevrez le résultat suivant.

Click PHP

Http - Client

Le client http peut être utilisé pour faire des requêtes comme GET, POST, PUT etc.

Pour travailler avec le client http, ajoutez ce qui suit −

use Cake\Http\Client;
Copier après la connexion

Travaillons sur un exemple pour comprendre le fonctionnement du client HTTP.

Méthode HTTP GET

Pour obtenir les données de l'URL http, vous pouvez procéder comme suit −

$response = $http->get('https://jsonplaceholder.typicode.com/users');
Copier après la connexion

Dans le cas où vous devez transmettre certains paramètres de requête, ils peuvent être transmis comme suit −

$response = $http->get('https://jsonplaceholder.typicode.com/users', ["id", 1]);
Copier après la connexion

Pour obtenir la réponse, vous pouvez procéder comme suit −

Pour données texte normales

$response->getBody();
Copier après la connexion

Pour Json

$response->getJson();
Copier après la connexion

Pour Xml

$response->getXml()
Copier après la connexion

Exemple

Apportez des modifications au fichier config/routes.php comme indiqué dans le programme suivant.

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('getData',['controller'=>'Requests','action'=>'index']);
   $builder->fallbacks();
});
Copier après la connexion

Créez un fichier RequestsController.php dans src/Controller/RequestsController.php. Copiez le code suivant dans le fichier du contrôleur.

src/Controller/RequestsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\Http\Client;
   class RequestsController extends AppController{
      public function index(){
         $http = new Client();
         $response = $http->get('https://jsonplaceholder.typicode.com/users');
         $stream = $response->getJson();
         $this->set('response',$stream);
      }
   }
?>
Copier après la connexion

Créez un répertoire Requests dans src/Template et sous ce répertoire, créez un fichier View appelé index.php. Copiez le code suivant dans ce fichier.

src/Template/Requests/index.php

<h3>All Users from url : https://jsonplaceholder.typicode.com/users</h3>
<?php
   if($response) {
      foreach($response as $res => $val) {
         echo '<font color="gray">Name: '.$val["name"].' Email -'.$val["email"].'</font><br>';
      }
   }
?>
Copier après la connexion

Exécutez l'exemple ci-dessus en visitant l'URL suivante −

http://localhost/cakephp4/getData
Copier après la connexion

Sortie

Cliquez sur le bouton Soumettre sans rien saisir. Vous recevrez le résultat suivant.

Users URL

Méthode HTTP POST

Pour travailler avec post, vous devez appeler le client $http comme suit −

$response = $http->post('yoururl', data);
Copier après la connexion

Voyons un exemple sur le même sujet.

Exemple

Apportez des modifications au fichier config/routes.php comme indiqué dans le programme suivant.

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('postData',['controller'=>'Requests','action'=>'index']);
   $builder->fallbacks();
});
Copier après la connexion

Créez un fichier RequestsController.php dans src/Controller/RequestsController.php. Copiez le code suivant dans le fichier du contrôleur. Ignorer si déjà créé.

src/Controller/RequestsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\Http\Client;
   class RequestsController extends AppController{
      public function index(){
         $http = new Client();
         $response = $http->post('https://postman-echo.com/post', [
            'name'=> 'ABC',
            'email' => 'xyz@gmail.com'
         ]);
      }
   }
?>
Copier après la connexion

Créez un répertoire Requests dans src/Template et sous ce répertoire, créez un fichier View appelé index.php. Copiez le code suivant dans ce fichier.

src/Template/Requests/index.php

<h3>Testing Post Method</h3>
Copier après la connexion

Exécutez l'exemple ci-dessus en visitant l'URL suivante −

http://localhost/cakephp4/postData

Sortie

Ci-dessous se trouve la sortie du code −

Post Method

De même, vous pouvez essayer la méthode PUT.

$http = new Client();
$response = $http->put('https://postman-echo.com/post', [
   'name'=> 'ABC',
   'email' => 'xyz@gmail.com'
]);
Copier après la connexion

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!

Étiquettes associées:
source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal