applyFilterの書き方

QuickFormで入力値にフィルタを適用するには、applyFilter関数を使用します。

applyFilterは、ここの要素又は全ての要素に適用できます。

$objQF->applyFilter('__ALL__','trim');

上記スクリプトは、全ての要素にtrim関数を実行するように指定しています。 trim関数を通すことによって空白のみの入力や不要な値を防ぐことができます。

個々の要素にフィルタを指定する場合

$objQF->addElement('text', 'txtMSG', 'メッセージ');
//ルールの追加
$objQF->addRule('txtMSG','メッセージを入力してください。','required');
//フィルタ
$objQF->applyFilter('txtMSG','addslashes');

上記のようにフィルタを設定します。

第二引数には、ユーザー定義関数を指定することもできます。

また、arrayとしてオブジェクトとメソッド名を渡すことによりチェックオブジェクトのメンバ変数で フィルタすることもできるようです。

正規表現を使用して独自の規則を作ればこの問題は回避できますが、 もっと簡単な解決法もあります。たいていの場合、入力内容の前後の空白は意味のないものであり、 検証作業の前に組み込みの trim() 関数を使用してこの空白を取り除くことができます。そのためには以下のようにします。


applyFilter('element', 'trim');
?>

フィルタは再帰的に適用されます。つまり、配列の全要素に対して順次 trim() が適用されるということです。 applyFilter() メソッドに対する引数として、あらゆる callback を渡すことが可能です。

ユーザの入力を「サニタイズ」し、無効な値を無視したい場合にはフィルタを使用します。