導入 - レンダラ

導入 - レンダラ -- フォームを出力する方法

レンダラとは?

リリース 3.0 より前には、フォーム出力のロジックは HTML_QuickForm クラスに実装されていました。 これには 2 つの問題がありました。

  1. クラスの肥大化 (80 以上ものメソッド!)

  2. 新しい出力ロジックの追加 (すなわち、テンプレートエンジンを使用するなど) が難しい

リリース 3.0 で、新しい仕組みが実装されました。フォーム出力のロジックは HTML_QuickForm_Renderer を継承したクラスで実装されるようになり、 かの有名な書籍 "Design Patterns" の中の Visitor デザインパターンに基づいた振る舞いをするようになりました。 これにより、以下のような利点を得られます。

  1. そのメソッドがほんとうに必要なときにだけ メソッドのコードが読み込まれます。

  2. 新しい出力メソッドを追加するのがきわめて簡単です。

リリース 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/ ディレクトリにあります。