Validator는 컨트롤러에 다음 두 줄을 추가하여 생성할 수 있습니다.
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 디렉토리를 생성하고 해당 디렉토리 아래에 index.php라는 View 파일을 생성합니다. 해당 파일의 다음 코드를 참조하세요.
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
아무 것도 입력하지 않고 제출 버튼을 클릭하세요. 다음과 같은 출력을 받게 됩니다.
http 클라이언트를 사용하여 GET, POST, PUT 등과 같은 요청을 할 수 있습니다.
http 클라이언트로 작업하려면 다음을 추가하세요. −
use Cake\Http\Client;
HTTP 클라이언트의 작동을 이해하기 위해 예제를 살펴보겠습니다.
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 디렉토리를 생성하고 해당 디렉토리 아래에 index.php라는 View 파일을 생성합니다. 해당 파일의 다음 코드를 참조하세요.
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
아무 것도 입력하지 않고 제출 버튼을 클릭하세요. 다음과 같은 출력을 받게 됩니다.
포스트 작업을 하려면 다음과 같이 $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
아래는 코드의 출력입니다. −
마찬가지로 PUT 방식을 시도해 볼 수 있습니다.
$http = new Client(); $response = $http->put('https://postman-echo.com/post', [ 'name'=> 'ABC', 'email' => 'xyz@gmail.com' ]);
위 내용은 CakePHP 유효성 검사기 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!