SEEDS Creator's Blog

読者です 読者をやめる 読者になる 読者になる

FuelPHP はじめました。複雑な 独自validation 設定には Closure を使おう

php プログラミング

Fuel PHP


ども。Webエンジニアの ishino です。

最近 FuelPHP を触る機会が増えてきたのていたので、学んだことを少しづつに記事にしていこうと思います。
珍しく、真面目にプログラムのこと書きましたので、よろしくお願いします。

FuelPHPとは?

FuelPHPはPHPで書かれたオープンソースのHMVCパターンを使うフレームワークです。
フレームワークは基本的な機能が揃っているので、高速にアプリケーションを開発することができます。
PHPのフレームワークにはたくさんの種類がありますが、中でもFuelPHPは比較的新しく、軽量で中規模のアプリケーションの開発に向いていると言われています。

validationの基本

FuelPHPは、POSTされた値の内容に対して、かんたんにvalidationをかけることができます。 必須項目の入力チェックは

$val = Validation::forge();
$val->add('name', '名前')
    ->add_rule('required');

でOKです。

ただ、複雑なvalidationチェックを行うには、自分で設定しなければなりません。 はじめは、この書き方が分からず、調べましたのでここに書いておきます。

複雑な 独自Validation 設定には Closure を使う

$option['name'] = 'hoge';
$val = Validation::forge();
$val->add('name', '名前')
    ->add_rule(['validation_name' => function($name) use ($option) {
        if ($name != $option['name']) {
            Validation::active()->set_message('validation_name', '「:label」が正しくありません');
            return false;
        } else {
            return true;
        }
}]);

このようにClosureを使うことで、独自validationを記述できるようになります。

また、functionの引数にはPOSTの値が、
その他でvalidtionで使うパラメータはuseで渡すことも可能です。

また、独自Validationを複数設定する時は、Closureに名前を設定しないとエラーメッセージが上書きされてしまうので、
上のコードのように名前を設定しておくといいですよ。


◎下の記事が参考になりました。 FuelPHPのValidationにクロージャを使う FuelPHPを更に使ってみて使えるなと思った拡張ValidationRuleの書き方とCore拡張の小技