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

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

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

最近 FuelPHP を触る機会が増えてきたのていたので、学んだことを少しづつに記事にしていこうと思います。

珍しく、真面目にプログラムのこと書きましたので、よろしくお願いします。

FuelPHPとは?

FuelPHPはPHPで書かれたオープンソースのHMVCパターンを使うフレームワークです。

フレームワークは基本的な機能が揃っているので、高速にアプリケーションを開発することができます。

PHPのフレームワークにはたくさんの種類がありますが、中でもFuelPHPは比較的新しく、軽量で中規模のアプリケーションの開発に向いていると言われています。

validationの基本

FuelPHPは、POSTされた値の内容に対して、かんたんにvalidationをかけることができます。

必須項目の入力チェックは

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

でOKです。

ただ、複雑なvalidationチェックを行うには、自分で設定しなければなりません。

はじめは、この書き方が分からず、調べましたのでここに書いておきます。

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

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

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

また、functionの引数にはPOSTの値が、

その他でvalidtionで使うパラメータはuseで渡すことも可能です。

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

上のコードのように名前を設定しておくといいですよ。

◎下の記事が参考になりました。

FuelPHPのValidationにクロージャを使う

FuelPHPを更に使ってみて使えるなと思った拡張ValidationRuleの書き方とCore拡張の小技