実践Laravel 基本編10 バリデート1

Posted: 2014-06-23 22:10 |  laravel 
Laravel4のバリデート関連は、リファレンスがわかりやすいのであまり困る事はないと思います。
今回は標準のもの以外の独自に実装するカスタムバリデートについてです。
Laravelはカスタムバリデートも簡単に実装できる様になっていますが、
もちろんカスタムバリデートという括りではなく、
コントローラーやモデルでそれに該当するもを実装する事も可能です。

カスタムバリデートを作ってみよう

カスタムバリデートを実装する場合は、
global.phpやどこか任意のところに追記していく方法と、service providerを使用する、方法等があります。
今回はglobal.phpに記述する方法をご紹介します。
最も簡単なextendを使用してカスタムバリデートを実装してみましょう
どこかコントローラーなどのvalidateを記述している箇所に以下の様に記述します。
 
        \Validator::extend('laravel', function($attribute, $value, $parameters) {
            return ($value != 'laravel') ? false : true;
        });
        
        $validate = \Validator::make(\Input::all(),
            ['user_name' => 'laravel'],
            ['laravel' => 'laravelじゃありません!']
        );
        if ($validate->fails()) {

            var_dump($validate->messages());
            
        }
これは、validateルールにlaravelというルールを追加したことになります。
formのuser_nameをこのルールの対象にしました。
$attributeはバリデートが適用されるフィールド名、
$valueは値、
$parametersは引数を用いる場合にその値が代入されます。
引数が必要な場合は、
['user_name' => 'laravel:3'],
と記述する事で3が代入されます。
closureの箇所は、コントローラーと同じ様に、
クラス@メソッド の形式で記述する事もできます。
 

\Validator::make

makeで必要とする引数は、
第一引数は、バリデート対象のフィールドを配列で記述、
第二引数は、ルールを配列で記述、
第三引数は、それぞれルールに対応したメッセージを任意で指定、指定がなければlang/{言語}/validate.php内のものが代入されます。
第四引数は、バリデートメッセージ内の属性を任意に変更できます

validate.phpで指定する場合は、次の様になります。
    'custom' => [
        'user_name' => [
            'laravel' => ':attribute is not laravel',
        ],
    ],
customを利用して記述しました。
この場合、:attributeがフィールド名に置き換わりますので、
"user name is not laravel"
と表示されます。
'attributes'を次の様に指定すると、user nameが指定したものに置き換わります。
    'attributes' => [
        "user_name" => "framework"
    ],
"framework is not laravel"
このようにして様々なカスタムバリデートを追加する事ができます。
次回はresolverを使用して、Illuminate\Validation\Validatorを利用する方法を紹介します。

about ytake

執筆に参加しています


Laravel お役立ち情報

share



このエントリーをはてなブックマークに追加

Categories

laravel 45

DTM 0

music 0

PHP全般 31

0

JAPAN 1

WORLD 1

javascript 4

RDBMS 1

NoSQL 1

NewSQL 1

Recent Posts

Ad

comments powered by Disqus

GitHub

Social Links

Author


クリエイティブ・コモンズ・ライセンス
Yuuki Takezawa 作『Ytake Blog』はクリエイティブ・コモンズ 表示 - 非営利 4.0 国際 ライセンス で提供されています。

© ytake/comnect All Rights Reserved. 2014