CakePHP 建立驗證器

PHPz
發布: 2024-09-10 17:26:58
原創
507 人瀏覽過

可以透過在控制器中新增以下兩行來建立驗證器。

use Cake\Validation\Validator;
$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->data());
登入後複製

使用 $validator 對象,我們首先呼叫 notEmpty() 方法,這將確保用戶名不能為空。之後,我們連結了 add() 方法來新增一個正確的電子郵件格式驗證。

之後,我們使用 notEmpty() 方法新增了對密碼欄位的驗證,這將確認密碼欄位不能為空。

範例

在 config/routes.php 檔案中進行更改,如下列程式所示。

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();
});
登入後複製

src/Controller/ValidsController.php 建立一個 ValidsController.php 檔案。 將以下程式碼複製到控制器檔案中。

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);
      }
   }
?>
登入後複製

src/Template 處建立一個目錄 Valids 並在該目錄下建立一個 View 文件,名稱為 index.php。 複製以下程式碼位於該檔案中。

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();
?>
登入後複製

透過造訪以下 URL 執行上述範例 -

http://localhost/cakephp4/validation

輸出

點擊提交按鈕,無需輸入任何內容。您將收到以下輸出。

Click PHP

Http - 客戶端

http 用戶端可用於發出 GET、POST、PUT 等請求

要使用 http 用戶端,請加入以下內容 -

use Cake\Http\Client;
登入後複製

讓我們透過範例來了解 HTTP 客戶端的工作原理。

HTTP GET 方法

要從給定的 http url 取得數據,您可以執行以下操作 -

$response = $http->get('https://jsonplaceholder.typicode.com/users');
登入後複製

如果您需要傳遞一些查詢參數,可以如下傳遞 -

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

要獲得回复,您可以執行以下操作 -

對於普通文字資料

$response->getBody();
登入後複製

對於Json -

$response->getJson();
登入後複製

對於 Xml

$response->getXml()
登入後複製

範例

在 config/routes.php 檔案中進行更改,如下列程式所示。

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();
});
登入後複製

src/Controller/RequestsController.php 建立一個 RequestsController.php 檔案。 將以下程式碼複製到控制器檔案中。

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);
      }
   }
?>
登入後複製

src/Template 處建立一個目錄 Requests 並在該目錄下建立一個 View 文件,名稱為 index.php。 複製以下程式碼位於該檔案中。

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>';
      }
   }
?>
登入後複製

透過造訪以下 URL 執行上述範例 -

http://localhost/cakephp4/getData
登入後複製

輸出

點擊提交按鈕,無需輸入任何內容。您將收到以下輸出。

Users URL

HTTP POST 方法

要使用 post,您需要呼叫 $http 用戶端,如下所示 -

$response = $http->post('yoururl', data);
登入後複製

讓我們來看一個例子。

範例

在 config/routes.php 檔案中進行更改,如下列程式所示。

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();
});
登入後複製

src/Controller/RequestsController.php 建立 RequestsController.php 檔案。 將以下程式碼複製到控制器檔案中。如果已創建,請忽略。

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'
         ]);
      }
   }
?>
登入後複製

src/Template處建立目錄Requests,並在該目錄下建立一個名為index.php的View檔案。將以下程式碼複製到該文件中。

src/Template/Requests/index.php

<h3>Testing Post Method</h3>
登入後複製

透過造訪以下 URL 執行上述範例 -

http://localhost/cakephp4/postData

輸出

下面給的是程式碼的輸出 -

Post Method

同樣,你可以嘗試PUT方法。

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

以上是CakePHP 建立驗證器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!