Heim  >  Artikel  >  Backend-Entwicklung  >  CakePHP erstellt Validatoren

CakePHP erstellt Validatoren

PHPz
PHPzOriginal
2024-09-10 17:26:58568Durchsuche

Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

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

Daten validieren

Sobald wir den Validator erstellt haben, können wir das Validator-Objekt zum Validieren von Daten verwenden. Der folgende Code erklärt, wie wir Daten für die Login-Webseite validieren können.

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

Mit dem $validator-Objekt haben wir zunächst die Methode notEmpty() aufgerufen, die sicherstellt, dass der Benutzername nicht leer sein darf. Danach haben wir die Methode add() verkettet, um eine weitere Validierung für das richtige E-Mail-Format hinzuzufügen.

Danach haben wir eine Validierung für das Passwortfeld mit der Methode notEmpty() hinzugefügt, die bestätigt, dass das Passwortfeld nicht leer sein darf.

Beispiel

Nehmen Sie Änderungen in der Datei config/routes.php vor, wie im folgenden Programm gezeigt.

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

Erstellen Sie eine ValidsController.php-Datei unter src/Controller/ValidsController.php. Kopieren Sie den folgenden Code in die Controller-Datei.

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

Erstellen Sie ein Verzeichnis Valids unter src/Template und erstellen Sie unter diesem Verzeichnis eine View-Datei mit dem Namen index.php. Kopieren Sie die Folgender Code in dieser Datei.

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

Führen Sie das obige Beispiel aus, indem Sie die folgende URL besuchen −

http://localhost/cakephp4/validation

Ausgabe

Klicken Sie auf die Schaltfläche „Senden“, ohne etwas einzugeben. Sie erhalten die folgende Ausgabe.

Click PHP

Http – Client

Mit dem http-Client können Anfragen wie GET, POST, PUT usw. gestellt werden.

Um mit dem HTTP-Client zu arbeiten, fügen Sie Folgendes hinzu −

use Cake\Http\Client;

Lassen Sie uns an einem Beispiel arbeiten, um die Funktionsweise des HTTP-Clients zu verstehen.

HTTP-GET-Methode

Um die Daten von der angegebenen http-URL zu erhalten, können Sie wie folgt vorgehen −

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

Falls Sie einige Abfrageparameter übergeben müssen, können diese wie folgt übergeben werden −

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

Um die Antwort zu erhalten, können Sie wie folgt vorgehen: −

Für normale Textdaten

$response->getBody();

Für Json

$response->getJson();

Für Xml

$response->getXml()

Beispiel

Nehmen Sie Änderungen in der Datei config/routes.php vor, wie im folgenden Programm gezeigt.

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

Erstellen Sie eine RequestsController.php-Datei unter src/Controller/RequestsController.php. Kopieren Sie den folgenden Code in die Controller-Datei.

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

Erstellen Sie ein Verzeichnis Requests unter src/Template und erstellen Sie unter diesem Verzeichnis eine View-Datei mit dem Namen index.php. Kopieren Sie die Folgender Code in dieser Datei.

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

Führen Sie das obige Beispiel aus, indem Sie die folgende URL besuchen −

http://localhost/cakephp4/getData

Ausgabe

Klicken Sie auf die Schaltfläche „Senden“, ohne etwas einzugeben. Sie erhalten die folgende Ausgabe.

Users URL

HTTP-POST-Methode

Um mit Post zu arbeiten, müssen Sie den $http-Client wie folgt aufrufen −

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

Sehen wir uns dazu ein Beispiel an.

Beispiel

Nehmen Sie Änderungen in der Datei config/routes.php vor, wie im folgenden Programm gezeigt.

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

Erstellen Sie eine Datei RequestsController.php unter src/Controller/RequestsController.php. Kopieren Sie den folgenden Code in die Controller-Datei. Ignorieren, wenn bereits erstellt.

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

Erstellen Sie ein Verzeichnis Requests unter src/Template und erstellen Sie unter diesem Verzeichnis eine View-Datei mit dem Namen index.php. Kopieren Sie den folgenden Code in diese Datei.

src/Template/Requests/index.php

<h3>Testing Post Method</h3>

Führen Sie das obige Beispiel aus, indem Sie die folgende URL besuchen −

http://localhost/cakephp4/postData

Ausgabe

Nachstehend finden Sie die Ausgabe des Codes −

Post Method

Ähnlich können Sie es mit der PUT-Methode versuchen.

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

Das obige ist der detaillierte Inhalt vonCakePHP erstellt Validatoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:CakePHP-SicherheitNächster Artikel:CakePHP-Sicherheit