Heim > Artikel > Backend-Entwicklung > CakePHP erstellt Validatoren
Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.
use Cake\Validation\Validator; $validator = new Validator();
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.
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
Klicken Sie auf die Schaltfläche „Senden“, ohne etwas einzugeben. Sie erhalten die folgende Ausgabe.
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.
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()
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
Klicken Sie auf die Schaltfläche „Senden“, ohne etwas einzugeben. Sie erhalten die folgende Ausgabe.
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.
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
Nachstehend finden Sie die Ausgabe des Codes −
Ä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!