CakePHP - Créer des validateurs

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

En utilisant l'objet $ validator, nous avons d'abord appelé le notEmpty()méthode, qui garantira que le nom d'utilisateur ne doit pas être vide. Après cela, nous avons enchaîné leadd() méthode pour ajouter une validation supplémentaire pour un format de courrier électronique 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éer un ValidsController.php déposer à 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éer un annuaire Valids à src/Template et sous ce répertoire, créez un View fichier 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

Production

Cliquez sur le bouton Soumettre sans rien saisir. Vous recevrez la sortie suivante.

Http - Client

Le client http peut être utilisé pour effectuer des requêtes telles que GET, POST, PUT, etc.

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

use Cake\Http\Client;

Laissez-nous travailler sur l'exemple pour comprendre le fonctionnement du client HTTP.

Méthode HTTP GET

Pour obtenir les données de give http url, vous pouvez faire comme suit -

$response = $http->get('https://jsonplaceholder.typicode.com/users');

Au cas où vous auriez besoin de passer des paramètres de requête, ils peuvent être passés comme suit -

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

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

Pour normal text data -

$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éer un RequestsController.php déposer à 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éer un annuaire Requests à src/Template et sous ce répertoire, créez un View fichier 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

Production

Cliquez sur le bouton Soumettre sans rien saisir. Vous recevrez la sortie suivante.

Méthode HTTP POST

Pour travailler avec la publication, vous devez appeler le client $ http comme suit -

$response = $http->post('yoururl', data);

Voyons un exemple sur le même.

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éer un RequestsController.php déposer à 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' => '[email protected]'
         ]);
      }
   }
?>

Créer un annuaire Requests à src/Template et sous ce répertoire, créez un Viewfichier 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

Production

Ci-dessous est la sortie du code -

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

$http = new Client();
$response = $http->put('https://postman-echo.com/post', [
   'name'=> 'ABC',
   'email' => '[email protected]'
]);