# Dijit に特有のフォーム・デコレーター

大部分のフォーム要素は Dijit 要素デコレーター （要素から dijit パラメータをとって来ます） を使うことができ、 要素で特定されたビュー・ヘルパーに、 これらと他のメタデータを渡せます。 しかしながら、フォームやサブ・フォーム及び表示グループをデコレートするために、 いろいろなレイアウト dijits に該当するデコレーターのセットがあります。

dijitデコレーターの全てで、 デコレートされた与えられた要素の dijitParams プロパティを探して、 `$params` 配列として使用される dijit ビュー・ヘルパーに押し付けます; それから、情報の重複が起こらないように、これらは他のどの特性からも分離されます。

## Dijit 要素デコレーター

ちょうど View ヘルパ・デコレーターのように、 レンダリングのときにビュー・ヘルパーとして使用される要素で、 Dijit 要素は helper プロパティを予期します。 Dijit パラメータは一般的に直接要素から引き出されますが、 dijitParams キー（そのキーの値は、任意の連想配列でしょう）による、 オプションとして渡されるかもしれません。

各々の要素がユニークな ID （要素の `getId()` メソッドから取得されるように） を持つことは、重要です。 繰り返しが `dojo()` ビュー・ヘルパーの範囲内で検出されるならば、 デコレーターは通知の引き金を引いて、 識別子に `uniqid()` からの戻りを追加することによってユニークな ID を作成します。

標準的な使用法では、 単純に最初にデコレーター・チェーンにこのデコレーターを 追加オプションなしで、結びつけます。

### Dijit 要素デコレーターの使用法

    $element->setDecorators(array(
        'DijitElement',
        'Errors',
        'Label',
        'ContentPane',
    ));

## Dijit フォーム・デコレーター

Dijit フォーム・デコレーターは、 フォーム・デコレーターと非常に似ています; 実際、それが 同じビュー・ヘルパー名 ('form') を利用するので、実際、基本的に入れ替えて使うことができます。

設定のために `dijit.form.Form` は少しも dijit パラメータを必要としないので、 プログラムされた dijit の生成が確実に機能できるように、 DOM ID が渡される dijit フォーム・ビュー・ヘルパーが必要とすることが主な違いです。 識別子としてフォーム名を渡すことによって、デコレーターはこれを確実にします。

## DijitContainer ベースのデコレーター

`DijitContainer` デコレーターは、実は、 いろいろな他のデコレーターが由来する抽象クラスです。 タイトル・サポートの追加で、それは Dijit要素 の同じ機能を提供します。 多くのレイアウト dijit はタイトルを要求するか、利用できます; 利用できるのであれば、 DijitContainer は要素の説明プロパティを利用して、 渡されるならば、 'legend' もしくは 'title' デコレーター・オプションのどちらかを利用することもできます。 対応する翻訳による翻訳アダプターが存在するならば、タイトルは翻訳されます。

以下は、 `DijitContainer` から継承するデコレーターの一覧です:

- AccordionContainer

- AccordionPane

- BorderContainer

- ContentPane

- SplitContainer

- StackContainer

- TabContainer

### Dijit コンテナ・デコレーター使用法

    // フォームで TabContainer を使う:
    $form->setDecorators(array(
        'FormElements',
        array('TabContainer', array(
            'id'          => 'tabContainer',
            'style'       => 'width: 600px; height: 500px;',
            'dijitParams' => array(
                'tabPosition' => 'top'
            ),
        )),
        'DijitForm',
    ));

    // サブフォームで ContentPane を使う
    // (AccordionContainer 以外の全てで使うことができます):
    $subForm->setDecorators(array(
        'FormElements',
        array('HtmlTag', array('tag' => 'dl')),
        'ContentPane',
    ));