[PHP-users 30322] Re: Smarty+QuickFormにて確認画面での3桁区切りの方法について

oppara mlml @ oppara.tv
2006年 9月 14日 (木) 23:48:24 JST


こんばんは、大原と申します。

例えば特定のtextエレメントの確認表示で、 
number_formatを使いたいなら
HTML_QuickForm_textを継承したMy_textというクラスを作って

require_once 'HTML/QuickForm/text.php';
class My_text extends HTML_QuickForm_text
{
     function My_text( $name = null, $label = null, $attr = null ) {
         HTML_QuickForm_input::HTML_QuickForm_input( $name, $label,  
$attr );
         $this->_persistantFreeze = true;
         $this->setType( 'text' );
     }
     function getFrozenHtml() {
         $value = $this->getValue();
         return ('' != $value? number_format($value): ' ' ) .
                $this->_getPersistantData();
     }
}
という感じで、適当にmy_text.phpというファイルに保存して

$form = new HTML_QuickForm( 'hoge' );
$form->registerElementType( 'my_text', '/path/to/my_text.php',  
'My_text' );
$form->addElement( 'my_text', 'foo', 'bar' );

とすればいけるんじゃないかと思います。
(実際に取りまわす値にカンマいれたいならapplyFilter()で  
^^;)


> さて、今回調査していてapplyFilter()の動作に疑問をもった 
> のですが、
(略)
>  実行すると、GET変数(URL表示部分)では 
> 「?'MyTextBox=+++入力内容」となり
>  空白が「+」に変換されていますが、
>  HTMLソース上では空白が除去されていませんでした。
>  「   入力内容」のように空白がそのままHidden値に 
> 設定されている。

exportValue()やら、getSubmitValue()の値は、確認されました 
か?
実際に取りまわす値にフィルタがかかってればOKだと思うのです 
が、、、

勘違いでしたらすみません。







PHP-users メーリングリストの案内