« Dreamweaver上でSmartyのincludeを適用させる | メイン | HTML_QuickForm_dateの戻り値 »

HTML_QuickForm の出力をカスタマイズ

HTML_QuickForm は確認画面用の出力まで自動でやってくれる。便利ですが「んん?確認画面用の Smarty テンプレファイルはいずこ?」と最初戸惑う。HTML_QuickForm の各クラスは、フォームの生成からチェック、確認画面の出力まで一つの変数で受けちゃうので、"確認画面専用のテンプレ"というのは必要ないんですな。ですので、カスタムクラスを自分で生成し出力部分を整形します。

*私の例はSmarty使用です。通常のスクリプト記述例は PHPのテクメモ さんなどへどうぞー。

■手順1 カスタムクラスを作成
自分でクラスを作ります。例えば私は、text を継承しつつ確認画面は画像で表示するようなエレメントを作成したいので、以下のような My_text_image というクラスを作り、My_text_image.php として新規ファイル保存しました。以下例。

<?php
require_once 'HTML/QuickForm/text.php';
class My_text_image extends HTML_QuickForm_text {
  function My_text_image( $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 = '<img src="'.$value.'" />'); . $this->_getPersistantData();
  }
}
?>

まあとりあえず・・getFrozenHtml の中の return をいじれば、出力変わるようですw 各クラスファイルをいろいろとりあえず中覗いてみてくださいな。

■手順2 新規部品として登録
new した HTML_QuickForm オブジェクトへ、先ほど作成したクラスを新規部品として以下のように登録してやる。

$○○ = new HTML_QuickForm();
$○○->registerElementType( '(新たに定義したい部品名)', '(新規作成したファイル名)', '(新たに定義したクラス名' );

私の場合は以下。
$form = new HTML_QuickForm();
$form->registerElementType( 'my_text_image', 'My_text_image.php', 'My_text_image' );

以後は以下のように my_text_image と呼び出すことによって使用できます。
$form->addElement('my_text_image','(渡したい変数名)','(タイトル)');

参考サイト
[PHP-users 30322] Re:Smarty+QuickFormにて確認画面での3桁区切りの方法について(MLog)
出力をカスタマイズする(PHPのテクメモ)
HTML_QuickForm利用の手引き

AD:

トラックバック

この一覧は、次のエントリーを参照しています: HTML_QuickForm の出力をカスタマイズ:

» 便利なHTML_QuickForm。出力コードをカスタマイズする時。 送信元 TMJ style
PHPの標準ライブラリ「PEAR」のHTML_QuickFormとSmartyの連携、かなり慣れてきました! ・・で、HTML_QuickFormは通常(... [詳しくはこちら]

今日のひと言

呑みいきたい!

磨者のはてなブックマーク はてなブックマーク

PHOTO COLLECTION

【WordPress】Ktai Entryをさくらで使う【メール投稿プラグイン】 : Go-PEARを使ったPEARのインストール : PEAR2.gif EmEditor で ダイレクトタグジャンプ : emeditor.gif WindowsXP へ XAMPP をインストール : xammp.jpg 携帯サイトで文字化け : 070707.gif 動的ページを静的URLで表示させる(PATH_INFO使用) : 400-300.gif PHP4でSmarty、tplファイルしか表示されないのは参照渡しが原因でした : php4%2Bsmarty.gif Dreamwerver で Smarty : Macromedia-Dreamweaver.gif MySQLの自動バックアップ phpMyBackupPro : logo.png さくらのレンタルサーバ へ PHP5.2.2 をインストールした : php.gif ダイナミックディスク⇔ベーシックディスクにはまる・・。 : 294574802_636f6f5e8c.jpg
RSS 2.0(XML)

Add to Google
My Yahoo!に追加
ADD TO Hatena::RSS
Subscribe with livedoor Reader

(→RSS/FEEDとは?

CLUB BASE st.215 最新NEWS