Maison >développement back-end >tutoriel php >CakePHP créant des validateurs
Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.
use Cake\Validation\Validator; $validator = new Validator();
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.
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
Cliquez sur le bouton Soumettre sans rien saisir. Vous recevrez le résultat suivant.
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.
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()
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
Cliquez sur le bouton Soumettre sans rien saisir. Vous recevrez le résultat suivant.
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.
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
Ci-dessous se trouve 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' => '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!