cakePHP3 – バリデーション処理

$validator
    // 存在チェック
    ->requirePresence('car_name', 'create')
    // 空でないことのチェック
    ->notEmpty('car_name', '車名は、必ず入力してください。')
    // 文字数のチェック(バイト数ではない)
    ->add('car_name', [
        'length' => [
            'rule' => ['maxLength', 50],
            'message' => '車名は、50 文字以内で入力してください。',
        ]
    // 未入力OK
    ->allowEmpty('ownership_period_start')
    // 日付形式のチェック
    ->add('ownership_period_start', 'date_check1', [
        'rule' => ['date', 'ymd'],
        'message' => '所有期間(開始)は、例:2017-01-20 といった日付形式で入力してください。',
    ])
    ->allowEmpty('model_year')
    // 数値のチェック
    ->add('model_year', 'numeric_check', [
        'rule' => ['numeric'],
        'message' => '年式は、数値のみで入力してください。',
        'last' => true,
    ])
    // 最小値のチェック
    ->add('model_year', 'range_check', [
        'rule' => ['comparison', ">=", MODEL_YEAR_MIN],
        'message' => "年式は、" . MODEL_YEAR_MIN . " 年以降で入力してください。",
    ]);
下記メソッドは、デフォルトの処理でデータをバリデートする
ORM\Table::newEntity()
ORM\Table::newEntities()
ORM\Table::patchEntity()
ORM\Table::patchEntities()
 または 
ORM\Table::save()
データ保存前にバリデーションチェックする場合

newEntity(), newEntities(), patchEntity() または patchEntities() を使った場合、 保存前のエンティティのバリデーションは自動的に実行されます。

カスタムバリデーションルール

[php]
// プロバイダーではないコールバック関数を利用する

$validator->add( フィールド, ルール, [‘rule’=> ルール設定 ]);
[/php]

プロバイダー

[php]

use App\Validation\ApiPermitValidation;

class hoge {

/**
* パラメタのチェック処理
*
* @param \Cake\Validation\Validator $validator
* @return \Cake\Validation\Validator
*/
public function validation(Validator $validator)
{
$validator
// API使用許可のチェック
->provider(‘authProvider’, ApiPermitValidation::class)
->add(‘token’, ‘custom’, [
‘rule’ => "allowExecute",
‘provider’ => ‘authProvider’,
‘message’ => ‘Execution API is not permitted.’
]);

return $validator;
}

}

[/php]

コメント

タイトルとURLをコピーしました