>  기사  >  백엔드 개발  >  CakePHP 유효성 검사기 만들기

CakePHP 유효성 검사기 만들기

PHPz
PHPz원래의
2024-09-10 17:26:58423검색

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/TemplateValids 디렉토리를 생성하고 해당 디렉토리 아래에 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

출력

아무 것도 입력하지 않고 제출 버튼을 클릭하세요. 다음과 같은 출력을 받게 됩니다.

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/TemplateRequests 디렉토리를 생성하고 해당 디렉토리 아래에 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

출력

아무 것도 입력하지 않고 제출 버튼을 클릭하세요. 다음과 같은 출력을 받게 됩니다.

Users URL

HTTP 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/TemplateRequests 디렉터리를 만들고 해당 디렉터리 아래에 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:CakePHP 보안다음 기사:CakePHP 보안