Maison  >  Article  >  développement back-end  >  CakePHP créant des validateurs

CakePHP créant des validateurs

PHPz
PHPzoriginal
2024-09-10 17:26:58423parcourir

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

use Cake\Validation\Validator;
$validator = new Validator();

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());

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();
});

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);
      }
   }
?>

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();
?>

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;

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');

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]);

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

Pour données texte normales

$response->getBody();

Pour Json

$response->getJson();

Pour Xml

$response->getXml()

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();
});

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);
      }
   }
?>

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>';
      }
   }
?>

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

http://localhost/cakephp4/getData

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);

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();
});

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'
         ]);
      }
   }
?>

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>

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'
]);

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!

Déclaration:
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
Article précédent:Sécurité CakePHPArticle suivant:Sécurité CakePHP