Pengesah Mencipta CakePHP

PHPz
Lepaskan: 2024-09-10 17:26:58
asal
559 orang telah melayarinya

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

use Cake\Validation\Validator;
$validator = new Validator();
Salin selepas log masuk

Mengesahkan Data

Sebaik sahaja, kami telah mencipta validator, kami boleh menggunakan objek validator untuk mengesahkan data. Kod berikut menerangkan cara kami boleh mengesahkan data untuk halaman web log masuk.

$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());
Salin selepas log masuk

Menggunakan objek $validator, kami telah terlebih dahulu memanggil kaedah notEmpty(), yang akan memastikan bahawa nama pengguna mestilah tidak kosong. Selepas itu, kami telah merantai kaedah add() untuk menambah satu lagi pengesahan untuk format e-mel yang betul.

Selepas itu kami telah menambah pengesahan untuk medan kata laluan dengan kaedah notEmpty(), yang akan mengesahkan bahawa medan kata laluan mestilah tidak kosong.

Contoh

Buat Perubahan dalam fail config/routes.php seperti yang ditunjukkan dalam program berikut.

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();
});
Salin selepas log masuk

Buat fail ValidsController.php di src/Controller/ValidsController.php. Salin kod berikut dalam fail pengawal.

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);
      }
   }
?>
Salin selepas log masuk

Buat direktori Valids di src/Template dan di bawah direktori itu buat fail View bernama index.php. Salin mengikuti kod dalam fail itu.

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();
?>
Salin selepas log masuk

Laksanakan contoh di atas dengan melawati URL berikut −

http://localhost/cakephp4/validation

Output

Klik pada butang hantar tanpa memasukkan apa-apa. Anda akan menerima output berikut.

Click PHP

Http - Pelanggan

Klien http boleh digunakan untuk membuat permintaan seperti GET, POST, PUT dll.

Untuk bekerja dengan klien http, tambahkan yang berikut −

use Cake\Http\Client;
Salin selepas log masuk

Mari kami mengusahakan contoh untuk memahami kerja klien HTTP.

Kaedah HTTP GET

Untuk mendapatkan data daripada give http url, anda boleh lakukan seperti berikut −

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

Sekiranya, anda perlu lulus beberapa param pertanyaan, ia boleh dihantar seperti berikut −

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

Untuk mendapatkan respons, anda boleh lakukan seperti berikut −

Untuk data teks biasa

$response->getBody();
Salin selepas log masuk

Untuk Json

$response->getJson();
Salin selepas log masuk

Untuk Xml

$response->getXml()
Salin selepas log masuk

Contoh

Buat Perubahan dalam fail config/routes.php seperti yang ditunjukkan dalam program berikut.

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();
});
Salin selepas log masuk

Buat fail RequestsController.php di src/Controller/RequestsController.php. Salin kod berikut dalam fail pengawal.

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);
      }
   }
?>
Salin selepas log masuk

Buat direktori Permintaan di src/Template dan di bawah direktori itu buat fail View yang dipanggil index.php. Salin mengikuti kod dalam fail itu.

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>';
      }
   }
?>
Salin selepas log masuk

Laksanakan contoh di atas dengan melawati URL berikut −

http://localhost/cakephp4/getData
Salin selepas log masuk

Output

Klik pada butang hantar tanpa memasukkan apa-apa. Anda akan menerima output berikut.

Users URL

Kaedah HTTP POST

Untuk bekerja dengan pos, anda perlu menghubungi pelanggan $http seperti berikut −

$response = $http->post('yoururl', data);
Salin selepas log masuk

Mari kita lihat satu contoh yang sama.

Contoh

Buat Perubahan dalam fail config/routes.php seperti yang ditunjukkan dalam program berikut.

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();
});
Salin selepas log masuk

Buat fail RequestsController.php di src/Controller/RequestsController.php. Salin kod berikut dalam fail pengawal. Abaikan jika sudah dibuat.

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'
         ]);
      }
   }
?>
Salin selepas log masuk

Buat direktori Permintaan di src/Template dan di bawah direktori itu cipta fail View yang dipanggil index.php. Salin kod berikut dalam fail itu.

src/Template/Requests/index.php

<h3>Testing Post Method</h3>
Salin selepas log masuk

Laksanakan contoh di atas dengan melawati URL berikut −

http://localhost/cakephp4/postData

Output

Diberikan di bawah ialah output kod −

Post Method

Begitu juga, anda boleh mencuba untuk kaedah PUT.

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

Atas ialah kandungan terperinci Pengesah Mencipta CakePHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan