レンダラとは?
リリース 3.0 より前には、フォーム出力のロジックは HTML_QuickForm クラスに実装されていました。
これには 2 つの問題がありました。
クラスの肥大化 (80 以上ものメソッド!)
新しい出力ロジックの追加 (すなわち、テンプレートエンジンを使用するなど) が難しい
リリース 3.0 で、新しい仕組みが実装されました。フォーム出力のロジックは
HTML_QuickForm_Renderer を継承したクラスで実装されるようになり、
かの有名な書籍 "Design Patterns" の中の
Visitor デザインパターンに基づいた振る舞いをするようになりました。
これにより、以下のような利点を得られます。
そのメソッドがほんとうに必要なときにだけ
メソッドのコードが読み込まれます。
新しい出力メソッドを追加するのがきわめて簡単です。
リリース 3.1.1 では 8 種類のレンダラが使用可能です。そのうちの 2 つは
3.0 以前のコードに基づいており、6 つは新規に作成されたものです。
直接サポートされるテンプレートエンジンは
Smarty、HTML_Template_Sigma、HTML_Template_IT、HTML_Template_Flexy
です。
レンダラの主な使用手順は、どれを使用した場合でもほぼ同じです。
<?php
// レンダラクラスをインクルードします
require_once 'HTML/QuickForm/Renderer/FooBar.php';
// レンダラのインスタンスを作成します
$renderer =& new HTML_QuickForm_Renderer_FooBar($options);
// なんらかのカスタマイズをします
$renderer->adjustSomething('element1', '...');
// ...
$renderer->adjustSomething('elementN', '...');
// フォームを処理します
$form->accept($renderer);
// 結果を出力します
$renderer->toFooBar();
?>
カスタマイズ用のメソッドや出力結果は、当然レンダラの型によって変化します。
使用例について
マニュアルに記載されている使用例は、ほんとうに基本的なものです。
デフォルトレンダラのより複雑な例は HTML_QuickForm の
docs/ ディレクトリにあります。
その他のレンダラの例については
docs/renderers/ ディレクトリにあります。