Previous Next

Dojoフォーム要素とデコレーター

dijit表示ヘルパーに基き、 クラスのZend_Dojo_Formファミリーは、 あなたのフォームの範囲内でネイティブにDijitsを利用する能力を提供します。

フォームでDojoフォーム要素を利用するために3つの選択肢があります:

  • Zend_Dojo::enableForm()を使います。 これは配置されたフォーム項目全てにデコレーターと要素のためのプラグイン・パスを再帰的に加えます。 その上、それは表示オブジェクトをDojo使用可能にします。 しかしながら、この呼び出しの後に配置したサブフォームはどれでも Zend_Dojo::enableForm()に渡されなければいけないことに注意してください。

  • それぞれDojo特有のフォーム及びサブフォーム実装、 Zend_Dojo_FormZend_Dojo_Form_SubFormを使います。 これらはZend_Form及びZend_Form_SubFormのドロップインの置き換えとして使うことができ、 適当なデコレーターと要素パスをすべての含み、 Dojo特有のデフォルトのDisplayGroupクラスを設定し、 ビューをDojo使用可能にすることができます。

  • 最後に、最もあきあきしますが、あなた自身で適当なデコレーターと要素パスをセットして、 デフォルトのDisplayGroupクラスをセットし、 ビューをDojo使用可能にすることができます。 Zend_Dojo::enableForm()がすでに行うことなので、 この方法で我慢する理由はほとんどありません。

例1 既存のフォームでDojoを使用可能にする

"ちょっと待って" とあなたは言います; "私は、自分自身のカスタム・フォーム・クラスでZend_Formをすでに拡張しています! どのようにしたら、Dojoを使用できますか?"

初めに、 Zend_Formの拡張から Zend_Dojo_Formの拡張への 最も簡単で単純な変更は Zend_Form_SubFormのインスタンス化を行う箇所を全て Zend_Dojo_Form_SubFormのインスタンス化を行うように 更新することです。

2つ目の方法はカスタムフォームの init()メソッドの中で Zend_Dojo::enableForm()を呼び出すことです; フォームの定義を完了させるときは、 Dojoを使用可能にするためにサブフォーム全てを通じて繰り返します:

class My_Form_Custom extends Zend_Form
{
    public function init()
    {
        // フォームでDojoを使用可能にする:
        Zend_Dojo::enableForm($this);

        // 引き続きここからフォームの定義

        // サブフォーム全てでDojoを使用可能にする:
        foreach ($this->getSubForms() as $subForm) {
            Zend_Dojo::enableForm($subForm);
        }
    }
}

dijitに特有のフォームデコレーターと要素の使い方は まるで他全てのフォーム・デコレーターまたは要素の使い方のようです。

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

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

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

Dijit 要素デコレーター

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

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

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

例2 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

例3 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',
));

Dijit固有のフォーム要素

ビュー・ヘルパーが提供される各々のフォームdijitには、 対応するZend_Form要素があります。 dijitパラメータを操作するための以下のメソッドがそれらすべてにあります:

  • setDijitParam($key, $value): dijitパラメータを一つセットします。 dijitパラメータがすでに存在すれば、上書きされます。

  • setDijitParams(array $params): 一度にいくつかのdijitパラメータをセットします。 渡されたパラメータにマッチする既存のパラメータは上書きされます。

  • hasDijitParam($key): 与えられたdijitパラメータが定義されたか存在している場合はTRUEを返します。 それ以外はFALSEを返します。

  • getDijitParam($key): 与えられたdijitパラメータを返します。 利用できない場合は NULL値を返します。

  • getDijitParams(): dijitパラメータを全て返します。

  • removeDijitParam($key): 与えられたdijitパラメータを除去します。

  • clearDijitParams(): 現行定義されたdijitパラメータを全て消去します。

Dijitパラメータは、dijitParams public プロパティに保存されます。 このように、あなたは単にこのプロパティを要素の上に置くことによって、 既存のフォーム要素をdijit使用可能にすることができます; あなたは、単にパラメータを操作するのを容易にするために、 上記のアクセッサを持っていません。

その上、dijit固有の要素は以下に該当するデコレーターの独特な一覧を実装します:

$element->addDecorator('DijitElement')
        ->addDecorator('Errors')
        ->addDecorator('HtmlTag', array('tag' => 'dd'))
        ->addDecorator('Label', array('tag' => 'dt'));

実質的に、Dijit要素が、標準的なViewHelperデコレーターの代わりに使われます。

最後に、ベースDijit要素により、 確実にDojoビュー・ヘルパー・パスがビューの上に置かれることになります。

Dijit要素、DijitMultiの変化はMulti abstract フォーム要素の機能を提供します。 そして、開発者が 'multiOptions' を指定できるようにします。 - 一般的に select の option またはラジオ のoptionです。

以下のdijit要素は、標準的なZend Framework配布において出荷されます。

ボタン

標準的なボタン要素に 由来していないので、 同じ機能を実装して、ドロップインの代わりとして使うことができます。 以下の機能が公開されます:

  • 名前が提供されないならば、 getLabel()はボタン・ラベルとして要素名を利用します。 さらに、翻訳メッセージにマッチした翻訳アダプターが利用できれば、 それは名前を翻訳します。

  • isChecked()は、 提出される値がラベルにマッチするかどうか決定します; もしマッチするなら、それはTRUEを返します。 これは、フォームが提出されたとき、どのボタンが使われたかについて決定することに役立ちます。

さらに、デコレーターのDijitElement及び DtDdWrapperだけがボタン要素のために使われます。

例4 ボタンdijit要素の使用例

$form->addElement(
    'Button',
    'foo',
    array(
        'label' => 'Button Label',
    )
);

チェックボックス

標準的なチェックボックス要素 に由来していないので、 それは同じ機能を実装します。 これは、以下のメソッドが公開されることを意味します

  • setCheckedValue($value): 要素がチェックされたときに使う値を設定します。

  • getCheckedValue(): チェックされたときに要素で使う値を取得します。

  • setUncheckedValue($value): チェックされていないときに要素で使う値を設定します。

  • getUncheckedValue(): チェックされていないときに要素で使う値を取得します。

  • setChecked($flag): 要素をチェック済みにするか否か設定します。

  • isChecked(): 要素が現在チェック済みか判断します。

例5 チェックボックスdijit要素の使用例

$form->addElement(
    'CheckBox',
    'foo',
    array(
        'label'          => 'A check box',
        'checkedValue'   => 'foo',
        'uncheckedValue' => 'bar',
        'checked'        => true,
    )
);

コンボボックス及びフィルタリング選択

コンボボックス dijitビュー・ヘルパー・文書 にみられるように、コンボボックスは選択とテキスト入力の混合です。 そして、自動補完及び、提示された選択肢の代わりを指定できるようにします。 フィルタリング選択は同じことですが、任意の入力を許しません。

注意: ラベル値を返すコンボボックス

コンボボックスはラベル値を返します。 期待に反するオプション値は返しません。 この理由から、コンボボックスはInArrayバリデーターを自動登録しません。 (FilteringSelectsがそうするけれども)

コンボボックスとフィルタリング選択フォーム要素は、 dojo.dataデータ・ストア(使用された場合)を指定することだけでなく、 選ばれた選択肢を調べて、セットするためにアクセッサとミューテーターを提供します。 それらはDijitMultiから拡張します。 そして、それは setMultiOptions()及び setMultiOption()メソッドによって 選ばれた選択肢を指定できます。 さらに、以下のメソッドを利用できます:

  • getStoreInfo(): 現行で設定されているデータストア情報を全て取得します。 現行で設定されたデータがなければ、空の配列を返します。

  • setStoreId($identifier): ストアの識別変数を設定します。 (通常、Dojoで 'jsId' 属性によって言及されます) これは、有効なjavascript変数の名前でなければなりません。

  • getStoreId(): ストアの識別変数名を取得します。

  • setStoreType($dojoType): 使用するデータストアクラスを設定します; 例えば "dojo.data.ItemFileReadStore"

  • getStoreType(): 使用するdojoデータストアクラスを取得します。

  • setStoreParams(array $params): データ・ストア・オブジェクトを構成するために使われるパラメータをいずれも設定します。 例えば、 dojo.data.ItemFileReadStore データストアでは dojo.dataオブジェクトを返す場所を指す 'url' パラメータを期待します。

  • getStoreParams(): 現行で設定されているデータストアパラメータをいずれも取得します; もしなければ、空の配列を返します。

  • setAutocomplete($flag): ユーザーが要素から離れるとき、選ばれた項目が使われるかどうかを示します。

  • getAutocomplete(): 自動補完フラグの値を取得します。

dojo.dataストアが要素で登録されなければ、 登録された選択肢の配列のキーを検証するInArrayバリデーターを この要素はデフォルトで登録します。 setRegisterInArrayValidator(false)を呼び出すことでも、 registerInArrayValidator設定キーにFALSE値を渡すことでも、 このふるまいを抑制できます。

例6 コンボボックスdijit要素を選択肢入力として使う

$form->addElement(
    'ComboBox',
    'foo',
    array(
        'label'        => 'ComboBox (select)',
        'value'        => 'blue',
        'autocomplete' => false,
        'multiOptions' => array(
            'red'    => 'Rouge',
            'blue'   => 'Bleu',
            'white'  => 'Blanc',
            'orange' => 'Orange',
            'black'  => 'Noir',
            'green'  => 'Vert',
        ),
    )
);

例7 コンボボックスdijit要素をデータ・ストアと一緒に使う

$form->addElement(
    'ComboBox',
    'foo',
    array(
        'label'       => 'ComboBox (datastore)',
        'storeId'     => 'stateStore',
        'storeType'   => 'dojo.data.ItemFileReadStore',
        'storeParams' => array(
            'url' => '/js/states.txt',
        ),
        'dijitParams' => array(
            'searchAttr' => 'name',
        ),
    )
);

前述の例はComboBoxの代わりに FilteringSelectを使用します。

通貨テキストボックス

通貨テキストボックスは、主に通貨入力をサポートするためにあります。 通貨はローカライズされるかもしれず、小数も非小数もサポートできます。

内部的には、通貨テキストボックスは 数値テキストボックスバリデーションテキストボックスおよび テキストボックスに由来します; それらのクラスのメソッドが全て利用可能です。 さらに、下記の制約メソッドを使用できます:

  • setCurrency($currency): 使用する通貨種類を設定します; » ISO-4217 仕様に従うでしょう。

  • getCurrency():現行の通貨種類を取得します。

  • setSymbol($symbol): 3文字からなる» ISO-4217 通貨記号を設定します。

  • getSymbol(): 現行の通貨記号を取得します。

  • setFractional($flag): 通貨で小数を許すかどうか設定します。

  • getFractional(): 小数フラグの状態を取得します。

例8 通貨テキストボックスdijit要素の使用例

$form->addElement(
    'CurrencyTextBox',
    'foo',
    array(
        'label'          => 'Currency:',
        'required'       => true,
        'currency'       => 'USD',
        'invalidMessage' => 'Invalid amount. ' .
                            'Include dollar sign, commas, and cents.',
        'fractional'     => false,
    )
);

日付テキストボックス

日付テキストボックスは、 カレンダー・ドロップダウンで日付(クライアント側日付確認とフォーマッティングだけでなく) を選ぶために提供します。

内部的に、日付テキストボックスは バリデーションテキストボックス およびテキストボックス に由来します; それらのクラスのメソッドが全て利用可能です。さらに、 個別の制約を設定するために下記のメソッドを使用できます:

  • setAmPm($flag)及び getAmPm(): 時刻でAM/PM 文字列を使うかどうか

  • setStrict($flag)及び getStrict(): 入力を確認した時にマッチする厳しい正規表現を使うかどうか。 デフォルトはFALSEですが、空白文字やいくつかの省略形を許します。

  • setLocale($locale)及び getLocale(): 指定した要素で使うロケールを設定または取得します。

  • setDatePattern($pattern)及び getDatePattern(): 日付をフォーマットする»  unicode 日付形式パターンを提示または取得します。

  • setFormatLength($formatLength)及び getFormatLength(): 使用する形式の長さの種類を提示または取得します; "long"、"short"、"medium"または"full"のどれか一つです。

  • setSelector($selector)及び getSelector(): セレクタのスタイルを提示または取得します; "date" や "time" のどちらかでしょう。

例9 日付テキストボックスdijit要素の使用例

$form->addElement(
    'DateTextBox',
    'foo',
    array(
        'label'          => 'Date:',
        'required'       => true,
        'invalidMessage' => 'Invalid date specified.',
        'formatLength'   => 'long',
    )
);

エディタ

エディタはリッチなHTML内容を作成して、 編集するために利用できるWYSIWYGエディタを提供します。 dijit.Editorはプラグイン可能で、 必要に応じてカスタム・プラグインで拡張されるかもしれません; 詳しくは»  dijit.Editorドキュメントをご覧下さい。

エディタ・フォーム要素は、 下記のいくつかのアクセッサとミューテーターを いろいろなdijitパラメータを操作するために提供します:

  • captureEventsは、 編集エリア自体と連携するイベントです。 捕獲したイベントを操作するために以下のアクセッサとミューテーターを利用できます:

    • addCaptureEvent($event)

    • addCaptureEvents(array $events)

    • setCaptureEvents(array $events)

    • getCaptureEvents()

    • hasCaptureEvent($event)

    • removeCaptureEvent($event)

    • clearCaptureEvents()

  • eventsは、 onClickやonKeyUpなどのような標準的なDOMイベントです。 イベントを操作するために以下のアクセッサとミューテーターを利用できます:

    • addEvent($event)

    • addEvents(array $events)

    • setEvents(array $events)

    • getEvents()

    • hasEvent($event)

    • removeEvent($event)

    • clearEvents()

  • pluginsはエディターにツールバーのための追加のツールや、 許可する追加スタイルなどの機能を加えます。 プラグインを操作するために以下のアクセッサとミューテーターを利用できます:

    • addPlugin($plugin)

    • addPlugins(array $plugins)

    • setPlugins(array $plugins)

    • getPlugins()

    • hasPlugin($plugin)

    • removePlugin($plugin)

    • clearPlugins()

  • editActionIntervalは、 アンドゥ操作のためにイベントをまとめるために使われます。 デフォルトでこの値は3秒です。 setEditActionInterval($interval)メソッドが値を設定するために使われるかもしれません。 一方で、 getEditActionInterval()が値を取得します。

  • focusOnLoadは、 ページが読み込まれたとき、 この指定のエディタがフォーカスを受けるかどうか判断するために使われます。 デフォルトでこれはFALSEです。 メソッド setFocusOnLoad($flag)が値を設定するために使われるかもしれません。 一方で、 getFocusOnLoad()が値を取得します。

  • heightはエディターの高さを指定します; デフォルトでこれは300pxです。 メソッド setHeight($height)が値を設定するために使われるかもしれません。 一方で、 getHeight()が値を取得します。

  • inheritWidthは、 エディタが親コンテナの幅と単純にデフォルトの100%幅のどちらを使うか決定するために使われます。 デフォルトでこれはFALSEです。 (すなわち、画面の幅一杯を満たします) メソッド setInheritWidth($flag)が値を設定するために使われるかもしれません。 一方で、 getInheritWidth()が値を取得します。

  • minHeightはエディターの高さの最小値を設定します; デフォルトでこれは1emです。 メソッド setMinHeight($height)が値を設定するために使われるかもしれません。 一方で、 getMinHeight()が値を取得します。

  • styleSheetsは、 どの追加CSSスタイルシートがエディタの表示に影響を及ぼすために使われるか示します。 デフォルトでは何も登録されず、それはページ・スタイルを継承します。 エディタ・スタイルシートを操作するために以下のアクセッサとミューテーターを利用できます:

    • addStyleSheet($styleSheet)

    • addStyleSheets(array $styleSheets)

    • setStyleSheets(array $styleSheets)

    • getStyleSheets()

    • hasStyleSheet($styleSheet)

    • removeStyleSheet($styleSheet)

    • clearStyleSheets()

例10 エディタdijit要素の使用例

$form->addElement('editor', 'content', array(
    'plugins'            => array('undo', '|', 'bold', 'italic'),
    'editActionInterval' => 2,
    'focusOnLoad'        => true,
    'height'             => '250px',
    'inheritWidth'       => true,
    'styleSheets'        => array('/js/custom/editor.css'),
));

注意: エディタ Dijit は既定で div を使います

エディタ dijit は既定で HTMLDIV を使います。 dijit._editor.RichText 資料は、 HTML の TEXTAREA の上にビルドされたそれを持つことが セキュリティに影響するかもしれないことを示します。

言うことには、TEXTAREAに上品に退化できる エディタ・ウィジェットを望む機会があるかもしれません。 そのような場面では、 degrade プロパティを TRUE に設定することによってそうすることができます。

// 初期化にて
$editor = new Zend_Dojo_Form_Element_Editor('foo', array(
    'degrade' => true,
));

// フォームを通じた構築
$form->addElement('editor', 'content', array(
    'degrade' => true,
));

// または初期化後
$editor->degrade = true;

水平スライダー

水平スライダーは、 ある範囲で数値を選択するためのスライダーUI部品を提供します。 内部的には、それはフォームによって送信されるhidden要素の値をセットします。

水平スライダーは、抽象的なスライダーdijit要素に由来します。 さらに、スライダー罫線と罫線ラベルをセットして設定するための、 いろいろなメソッドがあります。

  • setTopDecorationDijit($dijit)及び setBottomDecorationDijit($dijit): スライダーの上側か下側で使うdijitの名前をセットします。 これは、接頭辞 "dijit.form." を含んではいけません。 むしろ final 名だけ - "HorizontalRule" または "HorizontalRuleLabels" のうちの1つ - を含まなければなりません。

  • setTopDecorationContainer($container)及び setBottomDecorationContainer($container): 罫線コンテナ要素のために使用する名前を指定します; 例えば、'topRule' や 'topContainer'など。

  • setTopDecorationLabels(array $labels)及び setBottomDecorationLabels(array $labels): RuleLabels dijit型のうちの1つで使用するラベルをセットします。 これらは、インデックスを付けられた配列でなければなりません; 与えられたラベル位置(例えば始めまたは終わり)をスキップするために、 一つの空の場所を指定します。

  • setTopDecorationParams(array $params)及び setBottomDecorationParams(array $params): 与えられた罫線、 またはRuleLabels dijitを構成するときに使うdijitパラメータです。

  • setTopDecorationAttribs(array $attribs)及び setBottomDecorationAttribs(array $attribs): 与えられた罫線、 またはRuleLabels HTML要素コンテナのために指定するHTML属性です。

  • getTopDecoration()及び getBottomDecoration(): 上記のミューテーターによって提示されたように、 与えられた罫線またはRuleLabels定義のためにすべてのメタデータを取得します。

例11 水平スライダーdijit要素の使用例

下記では、-10から10の間の整数を選択する水平スライダーを生成します。 上側には20%、40%、60%そして80%で印をつけられたラベルがあります、 下側には、0、50%そして100%の罫線があります。 値が変わるたびに、値を保存しているhidden要素は更新されます。

$form->addElement(
    'HorizontalSlider',
    'horizontal',
    array(
        'label'                     => 'HorizontalSlider',
        'value'                     => 5,
        'minimum'                   => -10,
        'maximum'                   => 10,
        'discreteValues'            => 11,
        'intermediateChanges'       => true,
        'showButtons'               => true,
        'topDecorationDijit'        => 'HorizontalRuleLabels',
        'topDecorationContainer'    => 'topContainer',
        'topDecorationLabels'       => array(
                ' ',
                '20%',
                '40%',
                '60%',
                '80%',
                ' ',
        ),
        'topDecorationParams'      => array(
            'container' => array(
                'style' => 'height:1.2em; font-size=75%;color:gray;',
            ),
            'list' => array(
                'style' => 'height:1em; font-size=75%;color:gray;',
            ),
        ),
        'bottomDecorationDijit'     => 'HorizontalRule',
        'bottomDecorationContainer' => 'bottomContainer',
        'bottomDecorationLabels'    => array(
                '0%',
                '50%',
                '100%',
        ),
        'bottomDecorationParams'   => array(
            'list' => array(
                'style' => 'height:1em; font-size=75%;color:gray;',
            ),
        ),
    )
);

数スピナー

数スピナーは、数値を入力するためのテキスト要素です; 設定された量によって値を増加させたり、減少させるための要素を含みます。

下記のメソッドが利用できます:

  • setDefaultTimeout($timeout)及び getDefaultTimeout(): ボタンが押されたままのときと、値が変更されるときの間の既定のタイムアウトを ミリ秒単位で設定または取得します。

  • setTimeoutChangeRate($rate)及び getTimeoutChangeRate(): ボタンが押されたままのとき、変化がなされる割合をミリ秒単位で設定または取得します。

  • setLargeDelta($delta)及び getLargeDelta(): ボタンが押されたままのとき、数値が変わるべき量を設定または取得します。

  • setSmallDelta($delta)及び getSmallDelta(): ボタンが一度押されたとき、数が変わるべきデルタを設定または取得します。

  • setIntermediateChanges($flag)及び getIntermediateChanges(): ボタンが押されたままのとき、 各々の値が変化するごとに表示されるべきかどうか示すフラグを設定または取得します。

  • setRangeMessage($message)及び getRangeMessage(): 利用できる値の範囲を指示しているメッセージを設定または取得します。

  • setMin($value)及び getMin(): 使用可能な最小値を設定または取得します。

  • setMax($value)及び getMax(): 使用可能な最大値を設定または取得します。

例12 数スピナーdijit要素の使用例

$form->addElement(
    'NumberSpinner',
    'foo',
    array(
        'value'             => '7',
        'label'             => 'NumberSpinner',
        'smallDelta'        => 5,
        'largeDelta'        => 25,
        'defaultTimeout'    => 500,
        'timeoutChangeRate' => 100,
        'min'               => 9,
        'max'               => 1550,
        'places'            => 0,
        'maxlength'         => 20,
    )
);

数テキストボックス

数テキストボックスは、数を入力するためのテキスト要素です; 数スピナーとは異なり、数は手で入力します。 バリデーションと制約は、 数が特定の範囲または形式にとどまることを確実とするために提示できます。

内部的には、数テキストボックスはバリデーションテキストボックス 及びテキストボックスに由来します; それらのクラスのメソッドが全て利用可能です。さらに、 個別の制約を設定するために下記のメソッドを使用できます:

  • setLocale($locale)及び getLocale(): このdijitを利用するために指定されたまたは代替のロケールを指定または取得します。

  • setPattern($pattern)及び getPattern(): 数をフォーマットするために使う» 数値パターン形式 を設定または取得します。

  • setType($type)及び getType(): 使用する数の形式型を取得します。 ('decimal'、'percent'または'currency'のいずれかであるべきです)。

  • setPlaces($places)及び getPlaces(): サポートする小数位の数を設定または取得します。

  • setStrict($flag)及び getStrict(): 空白文字及び数字以外の文字についてどの程度ゆるやかに許されるか示す 厳密性フラグの値を設定または取得します。

例13 数テキストボックスdijit要素の使用例

$form->addElement(
    'NumberTextBox',
    'elevation',
    array(
        'label'          => 'NumberTextBox',
        'required'       => true,
        'invalidMessage' => 'Invalid elevation.',
        'places'         => 0,
        'constraints'    => array(
            'min'    => -20000,
            'max'    => 20000,
        ),
    )
);

パスワードテキストボックス

パスワードテキストボックスは、 パスワード入力のみに結び付けられたバリデーションテキストボックスです; その唯一の目的は、dijitテーマを与えられたテキスト入力を クライアント側バリデーションを提示するパスワードのためにできるようにすることです。

内部的には、パスワードテキストボックスはバリデーションテキストボックス 及びテキストボックス に由来します; それらのクラスのメソッドが全て利用可能です。

例14 パスワードテキストボックスの使用例

$form->addElement(
    'PasswordTextBox',
    'password',
    array(
        'label'          => 'Password',
        'required'       => true,
        'trim'           => true,
        'lowercase'      => true,
        'regExp'         => '^[a-z0-9]{6,}$',
        'invalidMessage' => 'Invalid password; ' .
                            'must be at least 6 alphanumeric characters',
    )
);

ラジオボタン

ラジオボタンは、他のDojo dijitと一貫したルック&フィールを提示するために、 標準的なラジオ入力要素をラップします。

ラジオボタンはDijitMultiから拡張します。 そして、 setMultiOptions()及び setMultiOption()メソッドによって 選ばれた選択肢を指定できます。

デフォルトでこの要素は、 配列に対して登録された選択肢のキーを確認するInArrayバリデーターを登録します。 setRegisterInArrayValidator(false)または registerInArrayValidatorのどちらを呼び出しても、 設定キーにFALSE値を渡すことによってこのふるまいを抑制できます。

例15 ラジオボタンdijit要素の使用例

$form->addElement(
    'RadioButton',
    'foo',
    array(
        'label' => 'RadioButton',
        'multiOptions'  => array(
            'foo' => 'Foo',
            'bar' => 'Bar',
            'baz' => 'Baz',
        ),
        'value' => 'bar',
    )
);

シンプルテキストエリア

シンプルテキストエリアは、主に標準的なHTMLの textarea のようにふるまいます。 しかし、それは列または行の設定をサポートしません。 その代わり、textarea幅は、標準的なCSS幅を使用して指定されるべきです。 テキストエリアとは異なり、自動的に成長しません。

例16 シンプルテキストエリアdijit要素の使用例

$form->addElement(
    'SimpleTextarea',
    'simpletextarea',
    array(
        'label'    => 'SimpleTextarea',
        'required' => true,
        'style'    => 'width: 80em; height: 25em;',
    )
);

スライダーabstract要素

スライダーは 水平スライダー 及び 垂直スライダー の両方に由来するabstract要素です。 スライダーを構成するために、いくつかの一般的なメソッドを公開します:

  • setClickSelect($flag)及び getClickSelect(): スライダーをクリックしたら値を変更するかどうか示すフラグを設定または取得します。

  • setIntermediateChanges($flag)及び getIntermediateChanges(): 各々のスライダー変化イベントにdijitが通知を送るかどうか示すフラグを設定または取得します。

  • setShowButtons($flag)及び getShowButtons(): どちらかの端にボタンが表示されるかどうか示すフラグを設定または取得します。; もし表示されるなら、スライダーの値を変えるために、ユーザーはボタンをクリックできます。

  • setDiscreteValues($value)及び getDiscreteValues(): スライダーによって表される不連続な値の数を設定または取得します。

  • setMaximum($value)及び getMaximum(): スライダーの最大値を設定します。

  • setMinimum($value)及び getMinimum(): スライダーの最小値を設定します。

  • setPageIncrement($value)及び getPageIncrement(): スライダーがキーボード・イベントで変わる量を設定します。

使用例は、各々の具体的な拡張クラスで提供されます。

サブミットボタン

SubmitButtonという名前のDijitはありませんが、 どんなjavascriptとの結合も追加で必要とせずに、フォームを送信できるボタンdijitを提供するために、 1つをここに含めます。 それは、まさにボタンdijitのように動作します。

例17 サブミットボタンdijit要素の使用例

$form->addElement(
    'SubmitButton',
    'foo',
    array(
        'required'   => false,
        'ignore'     => true,
        'label'      => 'Submit Button!',
    )
);

テキストボックス

テキストボックスは、 主に他のdijitsに調和したルック&フィールで入力されるテキストを提供するために含まれます。 しかし、以下のメソッドで表されるいくらかのマイナーなフィルタリングとバリデーション機能も含みます:

  • setLowercase($flag)及び getLowercase(): 入力を小文字にキャストすべきかどうか示すフラグを設定または取得します。

  • setPropercase($flag)及び getPropercase(): 入力をProper Case(訳注:先頭を大文字、他を小文字にすること)にキャストすべきかどうか示すフラグを設定または取得します。

  • setUppercase($flag)及び getUppercase(): 入力を大文字にキャストすべきかどうか示すフラグを設定または取得します。

  • setTrim($flag)及び getTrim(): 先立つまたは後続する空白を除去すべきかどうか示すフラグを設定または取得します。

  • setMaxLength($length)及び getMaxLength(): 入力の長さの上限を設定または取得します。

例18 テキストボックスdijit要素の使用例

$form->addElement(
    'TextBox',
    'foo',
    array(
        'value'      => 'some text',
        'label'      => 'TextBox',
        'trim'       => true,
        'propercase' => true,
    )
);

テキストエリア

テキストエリアは、主に標準的なHTMLの textarea のようにふるまいます。 しかし、それは列または行の設定をサポートしません。 その代わり、textareaの幅は、標準的なCSS幅を使用して指定されるべきです; 列は、完全に省略されます。 テキストが追加されるたびに、textareaは垂直に伸びます。

例19 テキストエリアdijit要素の使用例

$form->addElement(
    'Textarea',
    'textarea',
    array(
        'label'    => 'Textarea',
        'required' => true,
        'style'    => 'width: 200px;',
    )
);

時刻テキストボックス

時刻テキストボックスは、 時刻を選ぶためにドロップダウンを提示するテキスト入力です。 ドロップダウンは指定された増分で、時刻の特定のウインドウを示すように構成されるかもしれません。

内部的には、時刻テキストボックスは日付テキストボックスバリデーションテキストボックス 及びテキストボックスに由来します; それらのクラスのメソッドが全て利用可能です。さらに、 個別の制約を設定するために下記のメソッドを使用できます:

  • setTimePattern($pattern)及び getTimePattern(): 時刻をフォーマットするための» unicode時間形式パターン を設定または取得します。

  • setClickableIncrement($format)及び getClickableIncrement(): Time Pickerでクリックできる全ての要素で 増分値を示す» ISO_8601 文字列を設定または取得します。

  • setVisibleIncrement($format)及び getVisibleIncrement(): 時刻選択にて見える増分を設定します; ISO_8601フォーマットに従わなければなりません。

  • setVisibleRange($format)及び getVisibleRange(): 時刻選択にていつでも見える時刻の範囲を設定または取得します; ISO_8601フォーマットに従わなければなりません。

例20 時刻テキストボックスdijit要素の使用例

以下は、時刻に2時を表示する、増分が10分毎の時刻テキストボックスをつくります。

$form->addElement(
    'TimeTextBox',
    'foo',
    array(
        'label'              => 'TimeTextBox',
        'required'           => true,
        'visibleRange'       => 'T04:00:00',
        'visibleIncrement'   => 'T00:10:00',
        'clickableIncrement' => 'T00:10:00',
    )
);

バリデーションテキストボックス

バリデーションテキストボックスは、 バリデーションと制約をテキスト入力に加える能力を提供します。 内部的には、テキストボックスに由来します。 dijitパラメータを操作するために、以下のアクセッサとミューテーターを加えます:

  • setInvalidMessage($message)及び getInvalidMessage(): 値がバリデーションされないときに表示するtooltipメッセージを設定または取得します。

  • setPromptMessage($message)及び getPromptMessage(): 要素の使用方法のために表示されるtooltipメッセージを設定または取得します。

  • setRegExp($regexp)及び getRegExp(): 要素を確認するために使用する正規表現を取得します。 正規表現は、バウンダリ(PHPのpreg* ファミリーの関数と異なります)を必要としません。

  • setConstraint($key, $value)及び getConstraint($key): 要素を確認するときに使う追加制約を設定または取得します; サブクラスで主に使われます。 制約は、dijitパラメータの 'constraints' キーに保存されます。

  • setConstraints(array $constraints)及び getConstraints(): 要素を確認するときに使う個々の制約を設定または取得します; サブクラスで主に使われます。

  • hasConstraint($key): 与えられた制約が存在するかどうか調べます。

  • removeConstraint($key)及び clearConstraints(): 要素のために個別またはすべての制約を取り除きます。

例21 バリデーションテキストボックスdijit要素の使用例

以下は、 単語文字(すなわち、空白や大部分の句読点は無効です)だけから成る 一つのストリングを必要とするバリデーション・テキストボックスをつくります。

$form->addElement(
    'ValidationTextBox',
    'foo',
    array(
        'label'          => 'ValidationTextBox',
        'required'       => true,
        'regExp'         => '[\w]+',
        'invalidMessage' => 'Invalid non-space text.',
    )
);

垂直スライダー

垂直スライダーは水平スライダー の兄弟分で、あらゆる点でその要素のように動作します。 唯一本当に違うところは、 'top*' 及び 'bottom*' メソッドが 'left*' and 'right*' で置き換えられ、 HorizontalRule 及び HorizontalRuleLabels を使う代わりに、 VerticalRule 及び VerticalRuleLabels が使われることです。

例22 垂直スライダーdijit要素の使用例

下記では、-10から10の間の整数を選択する垂直スライダーを生成します。 左側には20%、40%、60%そして80%で印をつけられたラベルがあります、 右側には、0、50%そして100%の罫線があります。 値が変わるたびに、値を保存しているhidden要素は更新されます。

$form->addElement(
    'VerticalSlider',
    'foo',
    array(
        'label'                    => 'VerticalSlider',
        'value'                    => 5,
        'style'                    => 'height: 200px; width: 3em;',
        'minimum'                  => -10,
        'maximum'                  => 10,
        'discreteValues'           => 11,
        'intermediateChanges'      => true,
        'showButtons'              => true,
        'leftDecorationDijit'      => 'VerticalRuleLabels',
        'leftDecorationContainer'  => 'leftContainer',
        'leftDecorationLabels'     => array(
                ' ',
                '20%',
                '40%',
                '60%',
                '80%',
                ' ',
        ),
        'rightDecorationDijit' => 'VerticalRule',
        'rightDecorationContainer' => 'rightContainer',
        'rightDecorationLabels' => array(
                '0%',
                '50%',
                '100%',
        ),
    )
);

Dojo Formサンプル

例23 Zend_Dojo_Formの利用

直接使うにせよ、それを拡張するにせよ、 Zend_FormでDojoを利用する最も簡単な方法は、 Zend_Dojo_Formを利用することです。 この例ではZend_Dojo_Formの拡張と、 すべてのdijit要素の使用法を示します。 それは4つのサブ・フォームをつくって、TabContainerを利用するためにフォームを飾ります。 そして、それ自身のタブの中に各々のサブ・フォームを表示します。

class My_Form_Test extends Zend_Dojo_Form
{
    /**
     * select要素で使う選択肢
     */
    protected $_selectOptions = array(
        'red'    => 'Rouge',
        'blue'   => 'Bleu',
        'white'  => 'Blanc',
        'orange' => 'Orange',
        'black'  => 'Noir',
        'green'  => 'Vert',
    );

    /**
     * Form初期化
     *
     * @return void
     */
    public function init()
    {
        $this->setMethod('post');
        $this->setAttribs(array(
            'name'  => 'masterForm',
        ));
        $this->setDecorators(array(
            'FormElements',
            array('TabContainer', array(
                'id' => 'tabContainer',
                'style' => 'width: 600px; height: 500px;',
                'dijitParams' => array(
                    'tabPosition' => 'top'
                ),
            )),
            'DijitForm',
        ));
        $textForm = new Zend_Dojo_Form_SubForm();
        $textForm->setAttribs(array(
            'name'   => 'textboxtab',
            'legend' => 'Text Elements',
            'dijitParams' => array(
                'title' => 'Text Elements',
            ),
        ));
        $textForm->addElement(
                'TextBox',
                'textbox',
                array(
                    'value'      => 'some text',
                    'label'      => 'TextBox',
                    'trim'       => true,
                    'propercase' => true,
                )
            )
            ->addElement(
                'DateTextBox',
                'datebox',
                array(
                    'value' => '2008-07-05',
                    'label' => 'DateTextBox',
                    'required'  => true,
                )
            )
            ->addElement(
                'TimeTextBox',
                'timebox',
                array(
                    'label' => 'TimeTextBox',
                    'required'  => true,
                )
            )
            ->addElement(
                'CurrencyTextBox',
                'currencybox',
                array(
                    'label' => 'CurrencyTextBox',
                    'required'  => true,
                    // 'currency' => 'USD',
                    'invalidMessage' => 'Invalid amount. ' .
                                        'Include dollar sign, commas, ' .
                                        'and cents.',
                    // 'fractional' => true,
                    // 'symbol' => 'USD',
                    // 'type' => 'currency',
                )
            )
            ->addElement(
                'NumberTextBox',
                'numberbox',
                array(
                    'label' => 'NumberTextBox',
                    'required'  => true,
                    'invalidMessage' => 'Invalid elevation.',
                    'constraints' => array(
                        'min' => -20000,
                        'max' => 20000,
                        'places' => 0,
                    )
                )
            )
            ->addElement(
                'ValidationTextBox',
                'validationbox',
                array(
                    'label' => 'ValidationTextBox',
                    'required'  => true,
                    'regExp' => '[\w]+',
                    'invalidMessage' => 'Invalid non-space text.',
                )
            )
            ->addElement(
                'Textarea',
                'textarea',
                array(
                    'label'    => 'Textarea',
                    'required' => true,
                    'style'    => 'width: 200px;',
                )
            );
        $editorForm = new Zend_Dojo_Form_SubForm();
        $editorForm->setAttribs(array(
            'name'   => 'editortab',
            'legend' => 'Editor',
            'dijitParams' => array(
                'title' => 'Editor'
            ),
        ))
        $editorForm->addElement(
            'Editor',
            'wysiwyg',
            array(
                'label'        => 'Editor',
                'inheritWidth' => 'true',
            )
        );

        $toggleForm = new Zend_Dojo_Form_SubForm();
        $toggleForm->setAttribs(array(
            'name'   => 'toggletab',
            'legend' => 'Toggle Elements',
        ));
        $toggleForm->addElement(
                'NumberSpinner',
                'ns',
                array(
                    'value'             => '7',
                    'label'             => 'NumberSpinner',
                    'smallDelta'        => 5,
                    'largeDelta'        => 25,
                    'defaultTimeout'    => 1000,
                    'timeoutChangeRate' => 100,
                    'min'               => 9,
                    'max'               => 1550,
                    'places'            => 0,
                    'maxlength'         => 20,
                )
            )
            ->addElement(
                'Button',
                'dijitButton',
                array(
                    'label' => 'Button',
                )
            )
            ->addElement(
                'CheckBox',
                'checkbox',
                array(
                    'label' => 'CheckBox',
                    'checkedValue'  => 'foo',
                    'uncheckedValue'  => 'bar',
                    'checked' => true,
                )
            )
            ->addElement(
                'RadioButton',
                'radiobutton',
                array(
                    'label' => 'RadioButton',
                    'multiOptions'  => array(
                        'foo' => 'Foo',
                        'bar' => 'Bar',
                        'baz' => 'Baz',
                    ),
                    'value' => 'bar',
                )
            );
        $selectForm = new Zend_Dojo_Form_SubForm();
        $selectForm->setAttribs(array(
            'name'   => 'selecttab',
            'legend' => 'Select Elements',
        ));
        $selectForm->addElement(
                'ComboBox',
                'comboboxselect',
                array(
                    'label' => 'ComboBox (select)',
                    'value' => 'blue',
                    'autocomplete' => false,
                    'multiOptions' => $this->_selectOptions,
                )
            )
            ->addElement(
                'ComboBox',
                'comboboxremote',
                array(
                    'label' => 'ComboBox (remoter)',
                    'storeId' => 'stateStore',
                    'storeType' => 'dojo.data.ItemFileReadStore',
                    'storeParams' => array(
                        'url' => '/js/states.txt',
                    ),
                    'dijitParams' => array(
                        'searchAttr' => 'name',
                    ),
                )
            )
            ->addElement(
                'FilteringSelect',
                'filterselect',
                array(
                    'label' => 'FilteringSelect (select)',
                    'value' => 'blue',
                    'autocomplete' => false,
                    'multiOptions' => $this->_selectOptions,
                )
            )
            ->addElement(
                'FilteringSelect',
                'filterselectremote',
                array(
                    'label' => 'FilteringSelect (remoter)',
                    'storeId' => 'stateStore',
                    'storeType' => 'dojo.data.ItemFileReadStore',
                    'storeParams' => array(
                        'url' => '/js/states.txt',
                    ),
                    'dijitParams' => array(
                        'searchAttr' => 'name',
                    ),
                )
            );
        $sliderForm = new Zend_Dojo_Form_SubForm();
        $sliderForm->setAttribs(array(
            'name'   => 'slidertab',
            'legend' => 'Slider Elements',
        ));
        $sliderForm->addElement(
                'HorizontalSlider',
                'horizontal',
                array(
                    'label' => 'HorizontalSlider',
                    'value' => 5,
                    'minimum' => -10,
                    'maximum' => 10,
                    'discreteValues' => 11,
                    'intermediateChanges' => true,
                    'showButtons' => true,
                    'topDecorationDijit' => 'HorizontalRuleLabels',
                    'topDecorationContainer' => 'topContainer',
                    'topDecorationLabels' => array(
                            ' ',
                            '20%',
                            '40%',
                            '60%',
                            '80%',
                            ' ',
                    ),
                    'topDecorationParams' => array(
                        'container' => array(
                            'style' => 'height:1.2em; ' .
                                       'font-size=75%;color:gray;',
                        ),
                        'list' => array(
                            'style' => 'height:1em; ' .
                                       'font-size=75%;color:gray;',
                        ),
                    ),
                    'bottomDecorationDijit' => 'HorizontalRule',
                    'bottomDecorationContainer' => 'bottomContainer',
                    'bottomDecorationLabels' => array(
                            '0%',
                            '50%',
                            '100%',
                    ),
                    'bottomDecorationParams' => array(
                        'list' => array(
                            'style' => 'height:1em; ' .
                                       'font-size=75%;color:gray;',
                        ),
                    ),
                )
            )
            ->addElement(
                'VerticalSlider',
                'vertical',
                array(
                    'label' => 'VerticalSlider',
                    'value' => 5,
                    'style' => 'height: 200px; width: 3em;',
                    'minimum' => -10,
                    'maximum' => 10,
                    'discreteValues' => 11,
                    'intermediateChanges' => true,
                    'showButtons' => true,
                    'leftDecorationDijit' => 'VerticalRuleLabels',
                    'leftDecorationContainer' => 'leftContainer',
                    'leftDecorationLabels' => array(
                            ' ',
                            '20%',
                            '40%',
                            '60%',
                            '80%',
                            ' ',
                    ),
                    'rightDecorationDijit' => 'VerticalRule',
                    'rightDecorationContainer' => 'rightContainer',
                    'rightDecorationLabels' => array(
                            '0%',
                            '50%',
                            '100%',
                    ),
                )
            );

        $this->addSubForm($textForm, 'textboxtab')
             ->addSubForm($editorForm, 'editortab')
             ->addSubForm($toggleForm, 'toggletab')
             ->addSubForm($selectForm, 'selecttab')
             ->addSubForm($sliderForm, 'slidertab');
    }
}

例24 既存のフォームをDojoを使って変更する

Zend_Dojo::enableForm()という静的メソッドを利用して、 既存のフォームをDojoを使って変更することもできます。

最初の例では既存のフォームの例を修飾して見せています。

$form = new My_Custom_Form();
Zend_Dojo::enableForm($form);
$form->addElement(
'ComboBox',
'query',
array(
    'label'        => 'Color:',
    'value'        => 'blue',
    'autocomplete' => false,
    'multiOptions' => array(
        'red'    => 'Rouge',
        'blue'   => 'Bleu',
        'white'  => 'Blanc',
        'orange' => 'Orange',
        'black'  => 'Noir',
        'green'  => 'Vert',
    ),
)
);

あるいは、フォームの初期化でわずかな微調整をすることができます:

class My_Custom_Form extends Zend_Form
{
    public function init()
    {
        Zend_Dojo::enableForm($this);

        // ...
    }
}

もちろん、可能ならば、Zend_Dojo_Formを継承したクラスで単純に置き換えられるか、 置き換えたいでしょう。 そのクラスはすでにDojoが有効のZend_Formの選択リストの代わりです。

Previous Next
Zend Framework の紹介
概要
インストール
Zend Framework を学ぶ(主に英語)
クイックスタート(ごく一部のみ日本語)
Zend Framework & MVC Introduction
プロジェクトを作成
Create A Layout
モデルとデータベーステーブルの作成
Create A Form
おめでとう!
オートローディング(英語)
Introduction
Goals and Design
Basic Autoloader Usage
Resource Autoloading
Conclusion
プラグイン(英語)
Introduction
Using Plugins
Conclusion
Zend_Layout 入門(英語)
Introduction
Using Zend_Layout
Zend_Layout: Conclusions
Zend_View プレイスフォルダ入門(英語)
Introduction
Basic Placeholder Usage
Standard Placeholders
View Placeholders: Conclusion
Zend Form デコレータを理解して使う(ごく一部のみ日本語)
Introduction
Decorator Basics
Layering Decorators
Rendering Individual Decorators
Creating and Rendering Composite Elements
結論
Zend_Session, Zend_Auth, Zend_Acl 入門(英語)
Building Multi-User Applications With Zend Framework
Managing User Sessions In ZF
Authenticating Users in Zend Framework
Building an Authorization System in Zend Framework
Zend_Search_Lucene 入門(一部日本語)
Zend_Search_Lucene Introduction
Lucene Index Structure
インデックスのオープンと生成
索引付け
検索
サポートされるクエリー
検索結果のページ化
Zend_Paginator 入門(英語)
Introduction
Simple Examples
Pagination Control and ScrollingStyles
Putting it all Together
Zend Framework リファレンス
Zend_Acl
導入
アクセス制御の洗練
高度な使用法
Zend_Amf
導入
Zend_Amf_Server(日本語)
Zend_Application
導入
Zend_Application クイックスタート
Theory of Operation
コア機能
利用できるリソースプラグイン
Zend_Auth
導入
データベースのテーブルでの認証
ダイジェスト認証
HTTP 認証アダプタ
LDAP 認証
Open ID 認証
Zend_Barcode
導入
Barcode creation using Zend_Barcode class
Zend_Barcode Objects
Zend_Barcode Renderers
Zend_Cache
導入
キャッシュの仕組み
Zend_Cache のフロントエンド
Zend_Cache のバックエンド
The Cache Manager
Zend_Captcha
導入
Captcha の方法
CAPTCHA アダプタ
SimpleCloud API: Zend_Cloud
Document Service Introduction
Queue Service Introduction
StorageService Introduction
Zend_CodeGenerator
導入
Zend_CodeGeneratorサンプル
Zend_CodeGenerator リファレンス
Zend_Config
導入
動作原理
Zend_Config_Ini(日本語)
Zend_Config_Json
Zend_Config_Xml(日本語)
Zend_Config_Yaml
Zend_Config_Writer
Zend_Config_Writer(日本語)
Zend_Console_Getopt
導入
Getopt の規則の宣言
オプションおよび引数の取得
Zend_Console_Getopt の設定
Zend_Controller
Zend_Controller クイックスタート
Zend_Controller の基本
フロントコントローラ
リクエストオブジェクト
標準のルータ
ディスパッチャ
アクションコントローラ
アクションヘルパー
レスポンスオブジェクト
プラグイン
モジュラーディレクトリ構造の規約の使用
MVC での例外
Zend_Currency
Zend_Currency について
Using Zend_Currency
Options for currencies
What makes a currency?
Where is the currency?
How does the currency look like?
How much is my currency?
Calculating with currencies
Exchanging currencies
Additional informations on Zend_Currency
Zend_Date
導入
動作原理
基本メソッド
Zend_Date API の概要
日付の作成
日付関数全般用の定数
動作例
Zend_Db
Zend_Db_Adapter(日本語)
Zend_Db_Statement(日本語)
Zend_Db_Profiler(日本語)
Zend_Db_Select(日本語)
Zend_Db_Table(日本語)
Zend_Db_Table_Row(日本語)
Zend_Db_Table_Rowset(日本語)
導入
Zend_Db_Table_Definition(日本語)
Zend_Debug
変数の出力
Zend_Dojo
導入
Zend_Dojo_Data: dojo.data エンベロープ
Dojo ビューヘルパー
Dojoフォーム要素とデコレーター
Zend_Dojo build layer support
Zend_Dom
導入
Zend_Dom_Query(日本語)
Zend_Exception
例外の使用法
基本的な使用法
Previous Exceptions (前の例外)
Zend_Feed
導入
フィードの読み込み
ウェブページからのフィードの取得
RSS フィードの使用
Atom フィードの使用
単一の Atom エントリの処理
フィードおよびエントリの構造の変更
独自のフィードクラスおよびエントリクラス
Zend_Feed_Reader
Zend_Feed_Writer
Zend_Feed_Pubsubhubbub
Zend_File
Zend_File_Transfer(日本語)
Zend_File_Transfer 用のバリデータ
Filters for Zend_File_Transfer
Zend_Filter
導入
標準のフィルタクラス群
フィルタチェイン
フィルタの書き方
Zend_Filter_Input(日本語)
Zend_Filter_Inflector(日本語)
Zend_Form
Zend_Form(日本語)
Zend_Form クイックスタート
Zend_Form_Element を用いたフォーム要素の作成
Zend_Form によるフォームの作成
Zend_Form_Decorator による独自のフォームマークアップの作成
Zend Framework に同梱されている標準のフォーム要素
Zend Framework に同梱されている標準のデコレータ
Zend_Form の国際化
Zend_Form の高度な使用法
Zend_Gdata
導入
AuthSub による認証
Using the Book Search Data API
ClientLogin による認証
Google Calendar の使用法
Google Documents List Data API の使用法
Using Google Health
Google Spreadsheets の使用法
Google Apps Provisioning の使用法
Google Base の使用法
Picasa Web Albums の使用法
YouTube Data API の使用法
Gdata の例外処理
Zend_Http
導入
Zend_Http_Client - 高度な使用法
Zend_Http_Client - 接続アダプタ
Zend_Http_Cookie および Zend_Http_CookieJar
Zend_Http_Response(日本語)
Zend_Http_UserAgent
The UserAgent Device Interface
The UserAgent Features Adapter
The WURFL UserAgent Features Adapter
The DeviceAtlas UserAgent Features Adapter
The TeraWurfl UserAgent Features Adapter
The UserAgent Storage Interface
The Session UserAgent Storage Adapter
Zend_InfoCard
導入
Zend_Json
導入
基本的な使用法
Zend_Json の高度な使用法
XML から JSON への変換
Zend_Json_Server - JSON-RPCサーバー
Zend_Layout
導入
Zend_Layout クイックスタート
Zend_Layout の設定オプション
Zend_Layout の高度な使用法
Zend_Ldap
導入
API概要
利用シナリオ
ツール
Zend_Ldap_Nodeを使用してLDAPツリーへのオブジェクト指向アクセス
LDAPサーバから情報を取得
LDIFへ、または、からのLDAPデータシリアライズ
Zend_Loader
ファイルやクラスの動的な読み込み
The Autoloader
Resource Autoloaders
プラグインのロード
Zend_Locale
導入
Zend_Locale の使用法
正規化および地域化
日付および時刻の扱い
サポートするロケール
Zend_Log
概要
ライター
フォーマッタ
フィルタ
Using the Factory to Create a Log
Zend_Mail
導入
SMTP 経由での送信
SMTP 接続による複数のメールの送信
異なる転送手段の使用
HTML メール
ファイルの添付
受信者の追加
MIME バウンダリの制御
追加のヘッダ
文字セット
エンコーディング
SMTP 認証
セキュアな SMTP トランスポート
メールメッセージの読み込み
Zend_Markup
導入
さあ始めましょう
Zend_Markup パーサー
Zend_Markup レンダラー
Zend_Measure
導入
計測値の作成
計測値の出力
計測値の操作
計測値の型
Zend_Memory
概要
メモリマネージャ
メモリオブジェクト
Zend_Mime
Zend_Mime(日本語)
Zend_Mime_Message(日本語)
Zend_Mime_Part(日本語)
Zend_Navigation
導入
画面
Containers
Zend_Oauth
Introduction to OAuth
Zend_OpenId
導入
Zend_OpenId_Consumer の基本
Zend_OpenId_Provider(日本語)
Zend_Paginator
導入
使用法
設定
高度な使用法
Zend_Pdf
導入
PDF ドキュメントの作成および読み込み
PDF ドキュメントへの変更内容の保存
ページの操作
描画
Interactive Features
ドキュメントの情報およびメタデータ
Zend_Pdf モジュールの使用例
Zend_ProgressBar
Zend_ProgressBar(日本語)
Zend_Queue
導入
使用例
フレームワーク
アダプタ
Zend_Queueのカスタマイズ
Stomp(日本語)
Zend_Reflection
導入
Zend_Reflectionサンプル
Zend_Reflectionリファレンス
Zend_Registry
レジストリの使用法
Zend_Rest
導入
Zend_Rest_Client(日本語)
Zend_Rest_Server(日本語)
Zend_Search_Lucene
概要
インデックスの構築
インデックスの検索
クエリ言語
クエリ作成用の API
文字セット
拡張性
Java Lucene との相互運用
応用
ベストプラクティス
Zend_Serializer
導入
Zend_Serializer_Adapter
Zend_Server
導入
Zend_Server_Reflection(日本語)
Zend_Service
導入
Zend_Service_Akismet(日本語)
Zend_Service_Amazon(日本語)
Zend_Service_Amazon_Ec2(日本語)
Zend_Service_Amazon_Ec2: Instances
Zend_Service_Amazon_Ec2: Windows Instances
Zend_Service_Amazon_Ec2: Reserved Instances
Zend_Service_Amazon_Ec2: CloudWatch Monitoring
Zend_Service_Amazon_Ec2: Amazon Machine Images (AMI)
Zend_Service_Amazon_Ec2: Elastic Block Storage (EBS)
Zend_Service_Amazon_Ec2: Elastic IP Addresses
Zend_Service_Amazon_Ec2: Keypairs(日本語)
Zend_Service_Amazon_Ec2:リージョンおよび利用可能ゾーン
Zend_Service_Amazon_Ec2: Security Groups
Zend_Service_Amazon_S3
Zend_Service_Amazon_Sqs
Zend_Service_Audioscrobbler(日本語)
Zend_Service_Delicious(日本語)
Zend_Service_DeveloperGarden
Zend_Service_Ebay
Zend_Service_Ebay_Finding
Zend_Service_Flickr(日本語)
Zend_Service_LiveDocx
Zend_Service_Nirvanix(日本語)
Zend_Service_ReCaptcha(日本語)
Zend_Service_ShortUrl
Zend_Service_Simpy(日本語)
Zend_Service_SlideShare(日本語)
Zend_Service_StrikeIron(日本語)
Zend_Service_StrikeIron: バンドルされているサービス
Zend_Service_StrikeIron: 応用編
Zend_Service_Technorati(日本語)
Zend_Service_Twitter
Zend_Service_WindowsAzure
Zend_Service_WindowsAzure_Storage_Blob
Zend_Service_WindowsAzure_Diagnostics_Manager
Zend_Service_WindowsAzure_Storage_Queue
Zend_Service_WindowsAzure_Storage_Table
Zend_Service_Yahoo(日本語)
Zend_Session
導入
基本的な使用法
高度な使用法
グローバルセッションの管理
Zend_Session_SaveHandler_DbTable(日本語)
Zend_Soap
Zend_Soap_Server(日本語)
Zend_Soap_Client(日本語)
WSDLアクセッサ
自動検出
Zend_Tag
導入
Zend_Tag_Cloud
Zend_Test
導入
Zend_Test_PHPUnit(日本語)
Zend_Test_PHPUnit_Db(日本語)
Zend_Text
Zend_Text_Figlet(日本語)
Zend_Text_Table(日本語)
Zend_TimeSync
導入
Zend_TimeSync の動作
Zend_Tool
Using Zend_Tool On The Command Line
Extending Zend_Tool
Zend_Tool_Framework
導入
CLIツールの使用
アーキテクチャ
Zend_Tool_Frameworkを利用してプロバイダを作成する
出荷されたシステムプロバイダー
Extending and Configuring Zend_Tool_Framework
Zend_Tool_Project
導入
プロジェクトを作成
Zend_Tool Project Providers
Zend_Tool_Project Internals
Zend_Translate
導入
Zend_Translate のアダプタ
翻訳アダプタの使用法
ソースファイルの作成
翻訳用の追加機能
Plural notations for Translation
Zend_Uri
Zend_Uri(日本語)
Zend_Validate
導入
標準のバリデーションクラス群
バリデータチェイン
バリデータの書き方
検証メッセージ(一部日本語)
Zend_Version
Zend Framework のバージョンの取得
Zend_View
導入
コントローラスクリプト
ビュースクリプト
ビューヘルパー
Zend_View_Abstract(日本語)
Zend_Wildfire
Zend_Wildfire(日本語)
Zend_XmlRpc
導入
Zend_XmlRpc_Client
Zend_XmlRpc_Server(日本語)
ZendX_Console_Process_Unix
ZendX_Console_Process_Unix
ZendX_JQuery
Introduction
ZendX_JQuery View Helpers
ZendX_JQuery Form Elements and Decorators
Zend Framework のシステム要件
導入
Zend Framework 移行上の注意
Zend Framework 1.10(一部日本語)
Zend Framework 1.9(一部日本語)
Zend Framework 1.8(日本語)
Zend Framework 1.7(日本語)
Zend Framework 1.6(日本語)
Zend Framework 1.5(日本語)
Zend Framework 1.0(日本語)
Zend Framework 0.9(日本語)
Zend Framework 0.8(日本語)
Zend Framework 0.6(日本語)
Zend Framework PHP 標準コーディング規約
概要
PHP ファイルの書式
命名規約
コーディングスタイル
Zend Framework ドキュメント標準(一部日本語)
概要
ドキュメントファイル形式
推奨事項
Zend Framework MVC アプリケーションのために推奨されるプロジェクト構造
概要
推奨されるプロジェクト・ディレクトリ構造
モジュール構造
リライト設定ガイド
Zend Framework パフォーマンスガイド
導入
クラスの読み込み
Zend_Dbパフォーマンス
国際化(i18n)とローカライズ(l10n)
ビューのレンダリング
著作権に関する情報