HTML_QuickForm_Renderer

HTML_QuickForm_Renderer -- レンダラの基底クラスとなる抽象クラス (パッケージ開発者用)

説明

子クラスで実装する抽象メソッドを定義します。

QuickForm のレンダラは、Visitor デザインパターンを実装しています。 つまり、各フォーム要素が accept() メソッドを保持しており、 レンダラのインスタンスをパラメータに指定してこのメソッドがコールされるということです。 このメソッドが行う内容は、以下のとおりです。

レンダラオブジェクトは、本来なら各 HTML_QuickForm_concreteElement に対して renderConcreteElement() メソッドを保持すべきです。しかし、 幸いにもほとんどの要素が要求するレンダリングは似通っています。そのため、 renderTextarea()renderCheckbox() などのように分割するかわりに、一般化した renderElement() メソッドを使用しています。

レンダラは、メソッドに渡された情報を "蓄積" し、 それに基づいて何らかの形式の出力を行わなければなりません。 内部の実装方法は、レンダラの型に依存します。

独自のレンダラを作成する

まず最初に、どうやって情報を蓄積するかを決める必要があります。 おそらく、そのためには何らかのデータ構造を作成する必要があるでしょう (テンプレートオブジェクトなどに情報を一度に渡そうとしているのでない限り)。

次に、HTML_QuickForm_Renderer で定義されている全ての抽象メソッドに、具体的な処理を実装しなければなりません。 注意すべき例外は renderHtml() メソッドで、これはデフォルトのレンダラのみで実装されます。

それ以外にも、出力をカスタマイズしてその結果を得るためのパブリックメソッドを 追加したいと思われるかもしれません。しかし、これはレンダラの型に大きく依存します。

あなたが作成したレンダラを QuickForm に寄贈したいとお考えなら、以下の点に気をつけてください。

ティップ 既存のレンダラに関して、更なる使用例を提供してくださることも歓迎します。