質問: FuelPHPのValidationクラス使ってフィールドのチェックを行います。 複数フィールドの値を組み合わせてチェックしたいのでバリデーションクラスを作成し、独自のルールを作成しました。 ``` validation()->add('dummy')->add_rule('check_item','param1','param2','param3'); ``` このルールの追加方法では期待した動きはせず、単純に文字列として'param1','param2','param3'が渡されるだけです。 そもそも、他のフィールドの値を独自に設定したバリデーションルールに引き渡すことは可能なのでしょうか? 公式のドキュメントやブログなどを見ているとできそうな感じですがうまくいかず質問させていただきました。よろしくお願いします。 --- 補足です。 やりたいイメージとしては この方法でやりたいと思っています。 私の勘違いでできないのであれば この方法になるのでしょうか?
回答: まず、add_ruleの第二引数以降がそのまま渡って来る件についてです。 Fieldset_Field::add_ruleの第二引数以降の値にはルールのオプションパラメータが想定されていて、 既存ルールでいうとvalid_stringが第二引数を使って許容文字を指定できるようになっています。 ``` //valid_stringルールで 英数字、ドット、スペースを許可 add_rule('valid_string', array('alpha-numeric', 'dots', 'spaces')); ``` それで、独自バリデーション内から他フィールドを参照する方法ですが、 Validation::active()を通して各項目にアクセスできます。 (Validation::active()の戻り値はValidationクラスのインスタンスです) ``` $param1 = Validation::active()->input('param1'); //設定しているなら他にも色々取れる $label1 = Validation::active()->field('param1')->get_attribute('label'); ```