Rumah > Artikel > pembangunan bahagian belakang > Pengesah Mencipta CakePHP
Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.
use Cake\Validation\Validator; $validator = new Validator();
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());
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.
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(); });
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); } } ?>
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(); ?>
Laksanakan contoh di atas dengan melawati URL berikut −
http://localhost/cakephp4/validation
Klik pada butang hantar tanpa memasukkan apa-apa. Anda akan menerima output berikut.
Klien http boleh digunakan untuk membuat permintaan seperti GET, POST, PUT dll.
Untuk bekerja dengan klien http, tambahkan yang berikut −
use Cake\Http\Client;
Mari kami mengusahakan contoh untuk memahami kerja klien HTTP.
Untuk mendapatkan data daripada give http url, anda boleh lakukan seperti berikut −
$response = $http->get('https://jsonplaceholder.typicode.com/users');
Sekiranya, anda perlu lulus beberapa param pertanyaan, ia boleh dihantar seperti berikut −
$response = $http->get('https://jsonplaceholder.typicode.com/users', ["id", 1]);
Untuk mendapatkan respons, anda boleh lakukan seperti berikut −
Untuk data teks biasa −
$response->getBody();
Untuk Json −
$response->getJson();
Untuk Xml −
$response->getXml()
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(); });
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); } } ?>
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>'; } } ?>
Laksanakan contoh di atas dengan melawati URL berikut −
http://localhost/cakephp4/getData
Klik pada butang hantar tanpa memasukkan apa-apa. Anda akan menerima output berikut.
Untuk bekerja dengan pos, anda perlu menghubungi pelanggan $http seperti berikut −
$response = $http->post('yoururl', data);
Mari kita lihat satu contoh yang sama.
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(); });
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' ]); } } ?>
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>
Laksanakan contoh di atas dengan melawati URL berikut −
http://localhost/cakephp4/postData
Diberikan di bawah ialah output kod −
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' ]);
Atas ialah kandungan terperinci Pengesah Mencipta CakePHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!