tetsunosukeのnotebook

tetsunosukeのメモです

HTML_QuickFormで、否定のregex?

メールフォームを作っているんですが新しく要望が出たので対応中。
入力部分(例えば住所)のところにあらかじめ例を入れておいて、その入力欄にフォーカスが移ると例が消えて、新たに入力ができるようになる、と。それが新機能(へぼ)なんですが、その入力欄に対する必須チェックが問題。

上記の機能はvalueにデフォルト値を与えて、onFocusで消すというかなり古典的手法。必須チェック・・・

もちろんPear::HTML_QuickFormを使っているんですが、ここにaddRuleするときに何を使えばいいのだろう・・・。とりあえずrequiredするとvalueが飛んでくるのでアウト、regexだと、内部的にはpreg_matchを使っているので、否定表現にあたる正規表現がわからずアウト。
#文字クラスに対する否定なら[^a-z]とかでできるんだがなあ・・・。

かといって、callbackな関数を各入力フィールドに書くのもばかばかしいし(それやると、あと30行くらい増えるし(涙))
しかたなくhiddenでパラメータ渡しして、compareしようかなと思ってます。

HTML_QuickForm、かなり便利ではあるものの、どうやれば効率よく柔軟にかけるか考えると、かなり奥が深い感じがする。

・・・もしかしたらextends HTML_QuickForm_Ruleして新しいクラス作ればさくっと対応できんのかな・・・。普通に考えれば、regexの部分の preg_matchの結果をreturnしてるところで、!preg_matchの結果を返せばいいんだもんな・・・。

で、hiddenフィールドを作った場合

Smarty的には {$form.hidden}に値が渡るらしい。