<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 24997 -->
<sect2 id="zend.application.available-resources.frontcontroller">
    <title>Zend_Application_Resource_Frontcontroller(日本語)</title>

    <para>
        おそらく、あなたが<classname>Zend_Application</classname>でロードする
        最も一般的なリソースはフロントコントローラ・リソースです。
        そして、それは<classname>Zend_Controller_Front</classname>を構成する能力を提供します。
        このリソースは、
        任意のフロントコントローラ・パラメータを設定したり、初期化するプラグインを指定したり、
        そのほかにも能力を提供します。
    </para>

    <para>
        一旦初期化されると、
        リソースはブートストラップの<varname>$frontController</varname>プロパティを
        <classname>Zend_Controller_Front</classname>インスタンスに割り当てます。
    </para>

    <para>
        利用できる構成キーは以下を含みます。大文字と小文字の区別をしません:
    </para>

    <itemizedlist>
        <listitem>
            <para>
                <emphasis><property>controllerDirectory</property></emphasis>:
                コントローラ・ディレクトリを単独で指定している文字列値か、
                またはモジュールからコントローラ・ディレクトリへの連想配列。
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>moduleControllerDirectoryName</property></emphasis>:
                コントローラを含むモジュールの配下でサブディレクトリを示す文字列値
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>moduleDirectory</property></emphasis>:
                モジュールが見つかるかもしれないディレクトリ
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>defaultControllerName</property></emphasis>:
                デフォルト・コントローラの基底名。（通常は "index"）
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>defaultAction</property></emphasis>:
                デフォルト・アクションの基底名。（通常は "index"）
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>defaultModule</property></emphasis>:
                デフォルト・モジュールの基底名。（通常は "default"）
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>baseUrl</property></emphasis>:
                アプリケーションに対して明示された基底<acronym>URL</acronym>
                （通常は自動検出）
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>plugins</property></emphasis>:
                フロントコントローラのプラグイン・クラス名配列
                このリソースは、各々のクラスを（コンストラクタ引数なしで）インスタンス化して、
                それからフロントコントローラでインスタンスを登録します。
                独自のスタック・インデックスでプラグインを登録したい場合は、
                2つのキー <property>class</property> および <property>stackIndex</property>
                を持つ配列を与える必要があります。
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>params</property></emphasis>:
                フロントコントローラに登録する連想配列
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>returnresponse</property></emphasis>:
                フロント・コントローラをディスパッチした後にレスポンス・オブジェクトを返すべきかどうか。
                値は、ブーリアンでなければなりません。デフォルトで、これは無効です。
            </para>
        </listitem>

        <!-- TODO : to be translated -->
        <listitem>
            <para>
                <emphasis><property>dispatcher</property></emphasis>: allows overriding the default 
                dispatcher.  Has two subkeys, <property>class</property> (the classname of new dispatcher)
                and <property>params</property>, an array of parameters to pass to the dispatcher constructor.
            </para>
            
            <example id="zend.application.available-resources.frontcontroller.configExample.1">
                <title>ディスパッチャーを上書き</title>

                <programlisting language="ini"><![CDATA[
[production]
resources.frontController.dispatcher.class = "My_Custom_Dispatcher"
resources.frontController.dispatcher.params.foo = "bar"
resources.frontController.dispatcher.params.baz = "grok"
]]></programlisting>
            </example>

        </listitem>

    </itemizedlist>

    <para>
        認識されていないキーが与えられると、
        <methodname>setParam()</methodname>に渡すことで、
        フロントコントローラ・パラメータとして登録されます。
    </para>

    <example id="zend.application.available-resources.frontcontroller.configExample.2">
        <title>フロントコントローラ・リソース構成サンプル</title>

        <para>
            下記は、フロントコントローラ・リソースを設定する方法を示す<acronym>INI</acronym>スニペット・サンプルです。
        </para>

        <programlisting language="ini"><![CDATA[
[production]
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.moduleControllerDirectoryName = "actions"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.defaultControllerName = "site"
resources.frontController.defaultAction = "home"
resources.frontController.defaultModule = "static"
resources.frontController.baseUrl = "/subdir"
resources.frontController.plugins.foo = "My_Plugin_Foo"
resources.frontController.plugins.bar = "My_Plugin_Bar"
resources.frontController.plugins.baz.class = "My_Plugin_Baz"
resources.frontController.plugins.baz.stackIndex = 123
resources.frontController.returnresponse = 1
resources.frontController.env = APPLICATION_ENV

; 下記の代用です:
;Zend_Controller_Action_HelperBroker::addPath('Helper_Path', $helperPrefix);
resources.frontController.actionHelperPaths.HELPER_Prefix = "My/Helper/Path"
]]></programlisting>
    </example>

    <example id="zend.application.available-resources.frontcontroller.propertyExample">
        <title>ブートストラップでフロントコントローラを取得</title>

        <para>
            一旦フロントコントローラ・リソースが初期化されたら、
            ブートストラップの<varname>$frontController</varname>プロパティを通じて
            フロントコントローラ・インスタンスを取ってくることができます。
        </para>

        <programlisting language="php"><![CDATA[
$bootstrap->bootstrap('frontController');
$front = $bootstrap->frontController;
]]></programlisting>
    </example>
</sect2>
