CakePHP3에서 사용자 지정 유효성 검사 구현

5632 단어 cakephp3

디렉토리 및 파일 작성



Model 디렉토리 아래에 Validation 디렉토리를 작성하고 그 안에 검증을 정의하는 파일을 작성하십시오.

이번은 CustomValidation.php로 한다.



사용자 지정 유효성 검사 정의



이번에는 예로서 위도의 서식을 체크하는 함수를 구현한다.
<?php
namespace App\Model\Validation;
use Cake\Validation\Validation;

class CustomValidation extends Validation {
  /**
   * 緯度
   * @param string $value
   * @return bool
   */
    public static function isValidLatitude($value) {
        return (bool) preg_match('/^[0-9]+\.[0-9]+$/', $value);
    }

}

맞춤 검증 사용 방법



사용할 Model 테이블 파일에서 위의 사용자 지정 유효성 검사를 호출합니다.
<?php
namespace App\Model\Table;

use Cake\ORM\Query;
use Cake\ORM\RulesChecker;
use Cake\ORM\Table;
use Cake\Validation\Validator;

class SampleTable extends Table
{

    /**
     * Default validation rules.
     *
     * @param \Cake\Validation\Validator $validator Validator instance.
     * @return \Cake\Validation\Validator
     */
    public function validationDefault(Validator $validator)
    {
        $validator->provider('Custom', 'App\Model\Validation\CustomValidation');

        $validator
            ->requirePresence('latitude', 'create')
            ->notEmpty('latitude', "入力されていません")
            ->add('latitude', 'latitudeRule', [
                'rule' => ['isValidLatitude'],
                'provider' => 'Custom',
                'message' => "書式に誤りがあります",
                ]);


이 1문으로 Custom 라고 하는 키로 사용할 수가 있다.
    $validator->provider('Custom', 'App\Model\Validation\CustomValidation');

latitude라는 항목에 대해 커스텀 검증으로서 정의한 isValidLatitude 함수로 체크한다. (두 번째 인수의 latitudeRule은 임의의 문자열)
            ->add('latitude', 'latitudeRule', [
                'rule' => ['isValidLatitude'],
                'provider' => 'Custom',
                'message' => "書式に誤りがあります",
                ]);

좋은 웹페이지 즐겨찾기