cakephp 創(chuàng)建驗證器
可以通過在控制器中添加以下兩行來創(chuàng)建驗證器。
use cake\validation\validator; $validator = new validator();
驗證數(shù)據(jù)
一旦我們創(chuàng)建了驗證器,我們就可以使用驗證器對象來驗證數(shù)據(jù)。下面的代碼解釋了我們?nèi)绾悟炞C登錄網(wǎng)頁的數(shù)據(jù)。
$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 對象,我們首先調(diào)用了 notempty() 方法,這將確保用戶名不能為空。之后,我們鏈接了 add() 方法,為正確的電子郵件格式添加了更多驗證。
之后我們用 notempty() 方法添加了密碼字段的驗證,這將確認(rèn)密碼字段不能為空。
示例
在 config/routes.php 文件中進(jìn)行更改,如以下程序所示。
config/routes.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(); });
創(chuàng)建一個 validssrc/controller/validscontroller.php 中的 controller.php 文件。 將以下代碼復(fù)制到控制器文件中。
src/controller/validscontroller.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 中創(chuàng)建一個 valids 目錄,然后在該目錄下創(chuàng)建一個名為 index.php 的 view 文件。 b> 在該文件中復(fù)制以下代碼。
src/template/valids/index.php
if($errors) { foreach($errors as $error) foreach($error as $msg) echo '<font color="red"-->'.$msg.' '; } 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 執(zhí)行上述示例:
http://localhost/cakephp4/validation
輸出
點擊提交按鈕而不輸入任何內(nèi)容。您將收到以下輸出。
http-客戶端
http 客戶端可用于發(fā)出 get、post、put 等請求
要使用 http 客戶端,請?zhí)砑右韵聝?nèi)容:
use cake\http\client;
讓我們通過例子來理解 http 客戶端的工作。
http get 方法
要從給定的 http url 獲取數(shù)據(jù),您可以執(zhí)行以下操作:
$response = $http->get('https://jsonplaceholder.typicode.com/users');
如果您需要傳遞一些查詢參數(shù),可以按如下方式傳遞:
$response = $http->get('https://jsonplaceholder.typicode.com/users', ["id", 1]);
要獲得響應(yīng),您可以執(zhí)行以下操作:
對于 普通文本數(shù)據(jù):
$response->getbody();
對于 json:
$response->getjson();
對于 xml:
$response->getxml()
示例
在 config/routes.php 文件中進(jìn)行更改,如以下程序所示。
config/routes.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 中創(chuàng)建一個 requestscontroller.php 文件。 將以下代碼復(fù)制到控制器文件中。
src/controller/requestscontroller.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 創(chuàng)建一個目錄 requests,然后在該目錄下創(chuàng)建一個名為 index.php 的 view 文件。 b> 在該文件中復(fù)制以下代碼。
src/template/requests/index.php
<h3>all users from url : https://jsonplaceholder.typicode.com/users</h3>
if($response) {
foreach($response as $res =--> $val) {
echo 'name: '.$val["name"].' email-'.$val["email"].' ';
}
}
?>
通過訪問以下 url 執(zhí)行上述示例:
http://localhost/cakephp4/getdata
輸出
點擊提交按鈕而不輸入任何內(nèi)容。您將收到以下輸出。
http post 方法
要使用 post,您需要按如下方式調(diào)用 $http 客戶端:
$response = $http->post('yoururl', data);
讓我們看一個例子。
示例
在 config/routes.php 文件中進(jìn)行更改,如以下程序所示。
config/routes.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 中創(chuàng)建一個 requestscontroller.php 文件。 將以下代碼復(fù)制到控制器文件中。如果已經(jīng)創(chuàng)建則忽略。
src/controller/requestscontroller.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 創(chuàng)建一個 requests 目錄,然后在該目錄下創(chuàng)建一個名為index.php 的 view 文件。將以下代碼復(fù)制到該文件中。
src/template/requests/index.php
<h3>testing post method</h3>
通過訪問以下 url 執(zhí)行上述示例:
http://localhost/cakephp4/postdata
輸出
下面給出的是代碼的輸出:
同樣的,你可以試試 put 方法。
$http = new client(); $response = $http->put('https://postman-echo.com/post', [ 'name'=> 'abc', 'email' => 'xyz@gmail.com' ]);
- CodeIgniter MVC 框架
- CodeIgniter 基本概念
- CodeIgniter 庫
- CodeIgniter 文件上傳
- CodeIgniter Flashdata
- CodeIgniter 臨時數(shù)據(jù)
- CakePHP 控制器
- CakePHP 擴展視圖
- CakePHP 查看事件
- CakePHP 使用數(shù)據(jù)庫
- CakePHP 服務(wù)
- FuelPHP 應(yīng)用程序
- FuelPHP 控制器
- FuelPHP 模型和數(shù)據(jù)庫
- FuelPHP 工作示例
- Laravel 教程
- Laravel 命名空間
- Laravel 驗證
- Laravel 發(fā)送電子郵件
- Laravel 認(rèn)證