コントローラーに次の 2 行を追加することでバリデータを作成できます。
1 2 | use Cake\Validation\Validator;
$validator = new Validator();
|
ログイン後にコピー
データを検証しています
バリデータを作成したら、バリデータ オブジェクトを使用してデータを検証できます。次のコードは、ログイン Web ページのデータを検証する方法を説明しています。
1 2 3 4 5 | $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() メソッドを連鎖させて、適切な電子メール形式の検証をもう 1 つ追加しました。
その後、notEmpty() メソッドを使用してパスワード フィールドの検証を追加しました。これにより、パスワード フィールドが空であってはいけないことが確認されます。
例
次のプログラムに示すように、config/routes.php ファイルを変更します。
config/routes.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?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( 'validation' ,[ 'controller' => 'Valids' , 'action' => 'index' ]);
$builder ->fallbacks();
});
|
ログイン後にコピー
src/Controller/ValidsController.php に ValidsController.php ファイルを作成します。 コントローラー ファイルに次のコードをコピーします。
src/Controller/ValidsController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?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 を作成し、そのディレクトリの下に index.php. という名前の View ファイルを作成します。そのファイル内の次のコード。
src/Template/Valids/index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?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
出力
何も入力せずに送信ボタンをクリックしてください。次の出力が表示されます。
HTTP - クライアント
http クライアントは、GET、POST、PUT などのリクエストを行うために使用できます。
http クライアントを使用するには、次の行を追加します -
HTTP クライアントの動作を理解するために例に取り組んでみましょう。
HTTP GET メソッド
指定した http URL からデータを取得するには、次のように実行できます -
1 | $response = $http ->get( 'https://jsonplaceholder.typicode.com/users' );
|
ログイン後にコピー
いくつかのクエリパラメータを渡す必要がある場合は、次のように渡すことができます -
1 | $response = $http ->get( 'https://jsonplaceholder.typicode.com/users' , [ "id" , 1]);
|
ログイン後にコピー
応答を取得するには、次のように実行できます-
通常のテキストデータの場合 −
Json −
の場合
Xml −
の場合
例
次のプログラムに示すように、config/routes.php ファイルを変更します。
config/routes.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?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( 'getData' ,[ 'controller' => 'Requests' , 'action' => 'index' ]);
$builder ->fallbacks();
});
|
ログイン後にコピー
src/Controller/RequestsController.php に RequestsController.php ファイルを作成します。 コントローラー ファイルに次のコードをコピーします。
src/Controller/RequestsController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?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 を作成し、そのディレクトリの下に index.php. という名前の View ファイルを作成します。そのファイル内の次のコード。
src/Template/Requests/index.php
1 2 3 4 5 6 7 8 | <h3>All Users from url : https:
<?php
if ( $response ) {
foreach ( $response as $res => $val ) {
echo '<font color="gray">Name: ' . $val [ "name" ]. ' Email -' . $val [ "email" ]. '</font><br>' ;
}
}
?>
|
ログイン後にコピー
次の URL にアクセスして、上記の例を実行します -
出力
何も入力せずに送信ボタンをクリックしてください。次の出力が表示されます。
HTTP POST メソッド
ポストを操作するには、次のように $http クライアントを呼び出す必要があります -
1 | $response = $http ->post( 'yoururl' , data);
|
ログイン後にコピー
同じ例を 1 つ見てみましょう。
例
次のプログラムに示すように、config/routes.php ファイルを変更します。
config/routes.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?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( 'postData' ,[ 'controller' => 'Requests' , 'action' => 'index' ]);
$builder ->fallbacks();
});
|
ログイン後にコピー
src/Controller/RequestsController.php. に RequestsController.php ファイルを作成します。コントローラー ファイルに次のコードをコピーします。すでに作成されている場合は無視します。
src/Controller/RequestsController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?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
1 | <h3>Testing Post Method</h3>
|
ログイン後にコピー
次の URL にアクセスして、上記の例を実行します -
http://localhost/cakephp4/postData
出力
以下はコードの出力です -
同様に、PUT メソッドでも試すことができます。
1 2 3 4 5 | $http = new Client();
$response = $http ->put( 'https://postman-echo.com/post' , [
'name' => 'ABC' ,
'email' => 'xyz@gmail.com'
]);
|
ログイン後にコピー
以上がCakePHP バリデータの作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。