1から1080までの数字のみ入力可にしたいのですが、addRuleではどのように書けばよろしいでしょうか?
よろしくお願いします。
手っ取り早いのは、callbackを使ってしまうことでしょうか。
ベタベタに書くとこんな感じでしょうか。
function checkrange($value) { return ((1 <= $v) && ($v <= 1080)); } $form = new HTML_QuickForm('frmTest', 'get'); $form->addElement('header', 'MyHeader', 'QuickFormのテスト'); $form->addElement('text', 'text1', 'TEXT'); $form->addElement('submit', 'btnSubmit', '送信'); $form->addRule('text1', 'required', 'required'); $form->addRule('text1', '1-1080までの値を入力してください', 'callback', 'checkrange'); if ($form->validate()) { $form->freeze(); } $form->display();
何かの参考になれば。
ご回答ありがとうございます。
お教えいただいたことについていろいろトライしてみますが、なかなかできません><
簡単にできそうで難しいですね。
クラスを作れば?ということですか?
仰っていることが分からないのですが、addRuleはメソッドですから、当然、クラス(というよりオブジェクト)は用意されているものと考えているのですが。
お教えの通り記述しても動かないのでHTML_QuickFormの中をNumericRangeで調べてみましたらお教えいただいたルールはありませんでした。
で、調べてみると以下のようなBBSを見つけました。
http://old.nabble.com/-PHP-users-27728--PEAR:HTML_QuickForm_Rule...
そこで作れば?ということかなと思いました。
tdoi さんのコードにちょっと修正が必要です。
checkrange関数の引数を$value→$vに変更するだけです。
ただ、この簡単なチェックだと、「01080」のように入力された場合も、OKになってしまいますので、validateロジックは少し詰めないとダメですね。
function checkrange($v) { return ((1 <= $v) && ($v <= 1080)); } $form = new HTML_QuickForm('frmTest', 'get'); $form->addElement('header', 'MyHeader', 'QuickFormのテスト'); $form->addElement('text', 'text1', 'TEXT'); $form->addElement('submit', 'btnSubmit', '送信'); $form->addRule('text1', 'required', 'required'); $form->addRule('text1', '1-1080までの値を入力してください', 'callback', 'checkrange'); if ($form->validate()) { $form->freeze(); } $form->display();
ご回答ありがとうございます。
試したのですが動きませんでした。
ちょっとじっくり試す時間がとれませんでしたが、質問が終了するのでとりあえずお礼です。
ご回答ありがとうございます。
クラスを作れば?ということですか?