便利なHTML_QuickForm。出力コードをカスタマイズする時。

なんかでくくる」ってことが出来ません。 色々createElementの属性を調べてみても出来なさそう・・と思ったら、既存クラスの上書きで対応可能なのですね! 「PHPのテクメモ」さんにて紹介されていました。

<?php require_once(‘HTML/QuickForm/checkbox.php’); class myCheckbox extends HTML_QuickForm_checkbox { function toHtml() { if (0 == strlen($this->_text)) { $label = ”; } elseif ($this->_flagFrozen) { $label = $this->_text; } else { $label = ‘<label for=”‘ . $this->getAttribute(‘id’) . ‘”>’ . $this->_text . ‘</label>’; } return ‘<span>’ . HTML_QuickForm_input::toHtml() . $label . ‘</span>’; } //end func toHtml } ?> 上記のようなカスタムクラスを作成し、生成したQuickFormオブジェクトで新規部品として以下のように登録する。 $myForm=& new HTML_QuickForm(‘myForm’,’post’); $myForm->registerElementType([新たな部品名],[作成したファイルへのパス],[定義したクラス名]);
確認画面でのチェックボックスは[ ](チェック無し),[x](チェックあり)の形で表現されていることがイヤだったので、上記を参考にして、チェックありの項目だけを表示する自作チェックボックスクラスを作ってみました。 <?php require_once(‘HTML/QuickForm/checkbox.php’); class myCheckbox extends HTML_QuickForm_checkbox{ function toHtml(){ if ($this->_flagFrozen) { return HTML_QuickForm_checkbox::toHtml() . $label . “</div>\n”; } else { return HTML_QuickForm_checkbox::toHtml() . $label . “<br />\n”; } } //end func toHtml function getFrozenHtml(){ return ($this->getChecked()? ‘<div>’: ‘<div style=”display:none;”>’) . $this->_getPersistantData(); } } ?> うん♪こちらほうが良い良い。

1コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です