SilexでSymfonyのValidatorクラスを使ってみる。

WebフレームワークとしてSilexを使用している場合に、SymfonyコンポーネントのValidateクラスを 使用してバリデーション処理を書くためのメモ。
(※SilexのValidatorServiceProviderを使うこともできるが、$appを引きずり回す必要があり、いけてない。)

基本データ型のvalidate


// 環境にあったautoload.phpのパスを記述
require_once '../../../vendor/autoload.php';

use Symfony\Component\Validator\Validation;
use Symfony\Component\Validator\Constraints as Assert;

// 名前も年も不正な値
$name = '';
$age = -1;

// 配列に
$input = array(
    'name' => $name,
    'age' => $age
);

// validateのルール
$constraint = new Assert\Collection(array(
    'name' => array(new Assert\NotBlank()),
    'age' => array(new Assert\NotBlank(), new Assert\Range(array('min' => 0))),
));

// validate処理
$validator = Validation::createValidator();

// エラーコード出力
$errors = $validator->validate($input, $constraint);
if (count($errors) > 0) {
    foreach($errors as $error){
        echo $error->getMessage() . "(" . $error->getPropertyPath() . ": " . $error->getInvalidValue() . ")" , PHP_EOL;
    }
} else {
    echo "valid!", PHP_EOL;
}

公式(バージョンは2.8)

http://symfony.com/doc/2.8/components/validator.html


おすすめ記事
© 2016-2017 Fridles All Rights Reserved.