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

    <para>
        Die warscheinlich am meisten verwendete Ressource die man mit
        <classname>Zend_Application</classname> verwenden wird, ist die Front Controller Ressource,
        die eine Möglichkeit bietet den <classname>Zend_Controller_Front</classname> zu
        konfigurieren. Diese Ressource bietet die Möglichkeit verschiedenste Front Controller
        Parameter zu setzen, Plugins zu spezifizieren die initialisiert werden sollen, und vieles
        mehr.
    </para>

    <para>
        Sobald Sie initialisiert wurde, fügt die Ressource die <varname>$frontController</varname>
        Eigenschaft vom Bootstrap in die <classname>Zend_Controller_Front</classname> Instanz hinzu.
    </para>

    <para>
        Die folgenden Konfigurationsschlüssel sind vorhanden, und sind abhängig von der
        Groß- oder Kleinschreibung:
    </para>

    <itemizedlist>
        <listitem>
            <para>
                <emphasis><property>controllerDirectory</property></emphasis>: Entweder ein
                Stringwert der ein einzelnes Controller Verzeichnis spezifiziert, oder ein Array von
                Modul und Controller Verzeichnis Paaren.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>moduleControllerDirectoryName</property></emphasis>: Ein
                Stringwert der auf ein Unterverzeichnis unter einem Modul zeigt, das Controller
                enthält.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>moduleDirectory</property></emphasis>: Verzeichnis in dem Module
                gefunden werden können.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>defaultControllerName</property></emphasis>: Basisname des
                Standard Controllers (normalerweise "index").
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>defaultAction</property></emphasis>: Basisname der Standard
                Aktion (normalerweise "index").
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>defaultModule</property></emphasis>: Basisname des Standard
                Moduls (normalerweise "default").
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>baseUrl</property></emphasis>: Explizite Basis
                <acronym>URL</acronym> zur Anwendung (normalerweise automatisch erkannt).
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>plugins</property></emphasis>: Array von Front Controller Plugin
                Klassennamen. Die Ressource wird jede Klasse instanziieren (ohne Contructor
                Argumente) und die Instanz dann mit dem Front Controller registrieren. Wenn man ein
                Plugin mit einem speziellen Stackindex registriert muss man ein Array mit den zwei
                Schlüsseln <property>class</property> und <property>stackIndex</property> angeben.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>params</property></emphasis>: Array von Schlüssel und Wert
                Paaren die mit dem Front Controller registriert werden sollen.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis><property>returnresponse</property></emphasis>: Ob das Response Objekt
                nach dem Dispatchen des Front Controllers zurückgegeben wird oder nicht. Der Wert
                sollte ein Boolean sein; standardmäßig ist er deaktiviert.
            </para>
        </listitem>
    </itemizedlist>

    <para>
        Wenn ein Schlüssel übergeben wird der nicht erkannt wird, wird dieser als Parameter beim
        Front Controller registriert, indem er an <methodname>setParam()</methodname> übergeben
        wird.
    </para>

    <example id="zend.application.available-resources.frontcontroller.configExample">
        <title>Beispiel der Konfiguration einer Front Controller Ressource</title>

        <para>
            Anbei ist ein Beispiel eines <acronym>INI</acronym> Abschnitts der zeigt wie die Front
            Controller Ressource konfiguriert werden kann.
        </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

; Das folgende verweist auf:
; 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>Empfangen des Front Controllers im eigenen Bootstrap</title>

        <para>
            Sobald die Front Controller Ressource initialisiert wurde, kann die Front Controller
            Instanz über die <varname>$frontController</varname> Eigenschaft der Bootstraps geholt
            werden.
        </para>

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