Development

Documentation/de_DE/book/1.0/05-Configuring-Symfony (diff)

You must first sign up to be able to contribute.

Changes between Version 31 and Version 32 of Documentation/de_DE/book/1.0/05-Configuring-Symfony

Show
Ignore:
Author:
Dejan.Spasic (IP: 84.60.181.89)
Timestamp:
05/06/08 21:28:06 (9 years ago)
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Documentation/de_DE/book/1.0/05-Configuring-Symfony

    v31 v32  
    11'''ARBEITSENTWURF ROHÜBERSETZUNG / TRANSLATION WORKING DRAFT'''[[BR]] 
    2 Übersetzungsfortschritt: ca. 80%[[BR]] 
     2Übersetzungsfortschritt: 100%[[BR]] 
    33Übersetzung: DS[[BR]] 
    44Korrekturfortschritt: 0%[[BR]] 
    99=============================== 
    1010 
    11 Um die Verwendung einfach und leicht zu gestalten, definiert Symfony Konventionen, die den allgemeinen Anforderungen einer Standardanwendung ohne die Notwendigkeit einer Modifikation gerecht wird. Durch den Gebrauch einer Ansammlung einfacher und mächtiger Konfigurationsdateien, ist es über diese Weise möglich, fast jede Interaktion zwischen Ihrer Anwendung und dem Framework anzupassen. Über diese Dateien haben Sie auch selbst die Möglichkeit Ihre eigene Parameter für Ihre Anwendung hinzu zu fügen. 
     11Um die Verwendung einfach und leicht zu gestalten, definiert Symfony Konventionen, die den allgemeinen Anforderungen einer Standardanwendung ohne die Notwendigkeit einer Modifikation gerecht wird. Durch den Gebrauch einer Ansammlung einfacher und mächtiger Konfigurationsdateien, ist es über diese Weise möglich, fast jede interaktion zwischen Ihrer Anwendung und dem Framework anzupassen. Über diese Dateien haben Sie auch selbst die möglichkeit Ihre eigene Parameter für Ihre Anwendung hinzu zu fügen. 
     12 
     13 
    1214 
    1315Dieses Kapitel beschreibt, wie das Konfigurationssystem arbeitet: 
    1416 
     17 
     18 
    1519  * Die Konfigurationen werden in Dateien abgelegt die in YAML geschrieben sind. Es kann auch ein anderes Format gewählt werden. 
     20 
    1621  * Die Konfigurationsdateien befinden sich in den jeweiligen Projekt-, Anwendung- und Modulebenen einer Projektstruktur  
     22 
    1723  * Sie können eine Gruppe mit verschiedenen Konfigurationseinstellungen definieren, eine solche Gruppe von Einstellungen nennt sich Umgebung. 
    18   * Die Werte, die in den Konfigurationsdateien definert sind, sind im PHP Code Ihrer Anwendung verfügbar. 
     24 
     25  * Die Werte, die in den Konfigurationsdateien definert sind, sind im PHP Code Ihrere Anwendung verfügbar. 
     26 
    1927  * Zusätzlich ermöglicht Symfony PHP Code in YAML Dateien und andere Tricks, um das Konfigurationssystem noch flexibler zu gestalten. 
    2028 
     29 
     30 
    2131Das Konfigurationssystem 
     32 
    2233------------------------ 
    2334 
     35 
     36 
    2437Unabhängig vom Einsatz besitzen die meisten Web-Anwendungen einige gemeinsame Eingenschaften. Zum Beispiel können bestimmte Bereiche für bestimmte Benutzer beschränkt werden, oder die Seiten können durch einen Layout verziert werden, oder das ein Formular mit der Benutzereingabe nach einer fehlgeschlagene Validierung gefüllt wird. Ein Framework definiert die Struktur für diese Eigenschaften und ein Entwickler kann diese ändern, indem er die Einstellung der Konfiguration ändert. Diese Strategie erspart dem Entwickler eine Menge Zeit, da viele Änderungen nicht eine einzige Zeile Code erfordern, selbst wenn eine Menge Code vorhanden ist. Es ist auch viel leistungsfähiger, weil die Sicherstellung solcher Informationen in einer einzelnen und leicht identifizierbaren Position beibehalten werden kann. 
    2538 
     39 
     40 
    2641Jedoch hat dieser Ansazt ein Paar Vor- und Nachteile: 
    2742 
     43 
     44 
    2845  * Die Entwickler müssen nicht mehr unendlich lange und komplexe XML-Dateien schreiben. 
     46 
    2947  * Das abarbeiten einer Anfrage wird in der PHP-Architektur verlängert. 
    3048 
     49 
     50 
    3151In betracht dieser Punkte, setzt Symfony Konfigurationsdateien nur dann ein, wenn sie für den Einsatz am besten geeignet sind. Tatsächlich ist das Bestreben des Konfigurationsystems von Symfony: 
    3252 
     53 
     54 
    3355  * Leistungsfähig: Fast jeder Aspekt, der mit Konfigurationsdateien gehandhabt werden kann, wird mit Konfigurationsdateien gehandhabt. 
     56 
    3457  * Einfach: Viele Aspekte der Konfiguration werden nicht in einer normalen Anwendung gezeigt, da sie selten geändert werden müssen. 
     58 
    3559  * Leicht: Konfigurationsdateien sind für den Entwickler leicht zu lesen, zu ändern und zu erstellen. 
     60 
    3661  * Anpassbar: Die Standardeinstellung ist YAML als Konfigurationssprache vorgegeben, aber es kann auch ein INI, XML oder ein von dem Entwickler bevorzuges Format sein. 
     62 
    3763  * Schnell: Die Konfigurationsdateien werden nie durch die Anwendung sondern durch das Konfigurationssystem verarbeitet, welches in ein schnell bearbeitbaren Code für den PHP Server kompiliert. 
    3864 
     65 
     66 
    3967### Die YAML Syntax und die Symfony Konventionen  
    4068 
     69 
     70 
    4171Für die Konfigurationen verwendet Symfony standardmäßig, anstelle von den traditionelleren INI oder XML Formaten, das YAML-Format. Der Aufbau YAML wird durch Einrückung realisiert und ist schnell zu erstellen. Seine Vorteile und grundlegenden Richtlinien wurden bereits in Kapitel 1 beschrieben. Denoch müssen Sie einige Regeln beachten, wenn Sie eine YAML-Datei schreiben. Dieser Abschnitt stellt mehrere der vorstehenden Regeln vor. Für eine komplette Abhandlung dieses Themas, besuchen Sie die YAML Homepage ([http://www.yaml.org/] (http://www.yaml.org/)). 
    4272 
     73 
     74 
    4375Zuallererst benutzen Sie niemals TAB in YAML-Dateien. Verwenden Sie stattdessen Leerzeichen. YAML-Parser können Dateien mit TAB`s nicht vestehen, also rücken Sie Ihre Zeilen mit Leerzeichen (doppelte Leerzeichen geben in Symfony eine Einrückung an) wie in Codeabschnitt 5-1 dargestellt. 
    4476 
     77 
     78 
    4579Codeabschnitt 5-1 - YAML-Dateien verbieten TAB`s 
    4680 
     81 
     82 
    4783    # Verwenden Sie niemals TAB`s 
     84 
    4885    all: 
     86 
    4987    -> mail: 
     88 
    5089    -> -> webmaster:  webmaster@example.com 
    5190 
     91 
     92 
    5293    # Verwenden Sie stattdessen Leerzeichen 
     94 
    5395    all: 
     96 
    5497      mail: 
     98 
    5599        webmaster: webmaster@example.com 
    56100 
     101 
     102 
    57103Wenn Ihre Parameter Zeichenketten sind, die mit Leerzeichen enden oder beginnen, können Sie den Wert mit einfachen Anführungszeichen umgeben. Das selbe gilt auch wenn Ihr Parameter Sonderzeichen enthält, auch hier können Sie, wie in Codeabschnitt 5-2 dargestellt, den Wert mit einfachen Anführungszeichen umgeben. 
    58104 
     105 
     106 
    59107Codeabschnitt 5-2 - Nichtstandardisierte Zeichenketten sollten mit einfache Anführungszeichen umgeben werden. 
    60108 
     109 
     110 
    61111    error1: Diese Feld ist obligatorisch 
     112 
    62113    error2: '  Diese Feld ist obligatorisch  ' 
     114 
    63115    error3: 'Don''t leave this field blank'   # Einfache Anführungszeichen müssen umgeben werden 
    64116 
     117 
     118 
    65119Sie können lange Zeichenketten in mehrfachen Zeilen und auch mehrzeilige Zeichenketten, mit speziellen Zeichen (> und |) sowie eine zusätzliche Einrückung definieren. Die Codeabschnitt 5-3 zeigt diese Versammlung. 
    66120 
     121 
     122 
    67123Codeabschnitt 5-3 Lange und mehrzeilige Zeichenketten definieren 
    68124 
     125 
     126 
    69127    # Die gefaltete Methode, wird durch > eingeführt 
     128 
    70129    # Jeder Zeilenumbruch wird zu ein Leerzeichen 
     130 
    71131    # Dies Gestaltet YAML lesbarer 
     132 
    72133    accomplishment: > 
     134 
    73135      Mark set a major league 
     136 
    74137      home run record in 1998. 
    75138 
     139 
     140 
    76141    # Literale Methode, wird durch > eingeführt 
     142 
    77143    # Alle Zeilenumbrüche zählen 
     144 
    78145    # Die Einrückung erscheint nicht in der resultierenden Zeichenkette 
     146 
    79147    stats: | 
     148 
    80149      65 Home Runs 
     150 
    81151      0.278 Batting Average 
    82152 
     153 
     154 
    83155Um einen Wert als ein Array zu definieren, umgeben Sie die Elemente in eckige Klammern, oder verwenden Sie die erweiterte Syntax den Bindestrich, wie im Codeabschnitt 5-4 abgebildet. 
    84156 
     157 
     158 
    85159Codeabschnitt 5-4 - YAML Array Syntax 
    86160 
     161 
     162 
    87163    # Kurzform Syntax für Arrays 
     164 
    88165    players: [ Mark McGwire, Sammy Sosa, Ken Griffey ] 
    89166 
     167 
     168 
    90169    # Erweiterter Syntax für Arrays 
     170 
    91171    players: 
     172 
    92173      - Mark McGwire 
     174 
    93175      - Sammy Sosa 
     176 
    94177      - Ken Griffey 
    95178 
     179 
     180 
    96181Um einen Wert als assoziatives Array oder ein Mix zu definieren, umgeben Sie die Elemente in geschweiften Klammern und setzen Sie immer einen Leerzeichen zwischen dem Schlüssel und dem Wert im `Schlüssel: Wert` Paare. Sie können auch die erweiterte Syntax verwenden, indem Sie Einrückung und einen Zeilenumbruch für jeden neuen Schlüssel hinzufügen, wie der Codeabschnitt 5-5 zeigt. 
    97182 
     183 
     184 
    98185Codeabschnitt 5-5 - YAML assoziatives Array Syntax 
    99186 
     187 
     188 
    100189    # Falsche Syntax, es fehlen nach dem Doppelpunkt das Leerzeichen 
     190 
    101191    mail: {webmaster:webmaster@example.com,contact:contact@example.com} 
    102192 
     193 
     194 
    103195    # Richtige kurzform Syntax für assoziatives Arrays 
     196 
    104197    mail: { webmaster: webmaster@example.com, contact: contact@example.com } 
    105198 
     199 
     200 
    106201    # Erweiterte Syntax für assoziatives Arrays 
     202 
    107203    mail: 
     204 
    108205      webmaster: webmaster@example.com 
     206 
    109207      contact:   contact@example.com 
    110208 
     209 
     210 
    111211Für einen Booleschen Wert, verwenden Sie entweder `on`, `1` oder `true` für ein positiven und `off`, `0` oder `false` für ein negativen Wert. Der Codeabschnitt 5-6 zeigt die möglichen Booleschen Werte. 
    112212 
     213 
     214 
    113215Codeabschnitt 5-6 - YAML Boolean Values Syntax 
    114216 
     217 
     218 
    115219    true_values:   [ on, 1, true ] 
     220 
    116221    false_values:  [ off, 0, false ] 
    117222 
     223 
     224 
    118225Zögern Sie nicht, Kommentare (beginnend mit der Raute `#`) und zusätzliche Freiräume bei Werten einzusetzen, um Ihre YAML lesbareres zu ordnen, wie der Codeabschnitt 5-7 zeigt. 
    119226 
     227 
     228 
    120229Codeabschnitt 5-7 - YAML Kommentar Syntax und die Ausrichtung der Werte 
    121230 
     231 
     232 
    122233    # Das ist eine Kommetarzeile 
     234 
    123235    mail: 
     236 
    124237      webmaster: webmaster@example.com 
     238 
    125239      contact:   contact@example.com 
     240 
    126241      admin:     admin@example.com   # zusätzliche Freiräume erlauben eine nette Ausrichtung von Werten 
    127242 
     243 
     244 
    128245In einigen symfony Konfigurationsdateien sehen Sie manchmal Zeilen, die mit einer Raute beginnen (und, als solcher, durch die grammatischen YAML Definitionen, ignoriert werden), obwohl sie wie übliche Konfigurationszeilen aussehen. Dies ist eine symfony Konvention: die Standardeinstellungen, werden von anderen YAML-Dateien, die im symfony Kern abgelegt sind, geerbt und als auskommentierte Zeilen in Ihrer Anwendung zu Ihrer Inofrmation wiederholt. Wenn Sie den Wert eines solchen Parameters ändern möchten, müssen Sie zuerst die Zeile auskommentieren. Wie der Codeabschnitt 5-8 zeigt. 
    129246 
     247 
     248 
    130249Codeabschnitt 5-8 - Standardeinstellungen sind Kommentiert 
    131250 
     251 
     252 
    132253    # Der Cache ist standardmäßig ausgeschaltet 
     254 
    133255    settings: 
     256 
    134257    # cache: off 
    135258 
     259 
     260 
    136261    # Um die Einstellung zu ändern, müssen Sie zuerst die Zeile auskommentieren 
     262 
    137263    settings: 
     264 
    138265      cache: on 
    139266 
     267 
     268 
    140269Manchmal gruppiert Symfony die Parameterdefinitionen in Kategorien. Alle Einstellungen einer gegebenen Kategorie sehen unter der Überschrift der Kategorie eingedrückt aus. Strukturierende lange Listen der `Schlüssel: Wert` Paare, wird Lesbarkeit der Konfigurationen indem Sie die langen Listen in Kategorien gruppieren, verbessert. Die Überschriften der Kategorien beginnen mit einem Punkt (`.`). Der Codeabschnitt 5-9 zeigt ein Beispiel mit Kategoerien. 
    141270 
     271 
     272 
    142273Codeabschnitt 5-9 - Die Kategorien ähneln einem Schnüssel, aber Sie beginnen mit einem Punkt 
    143274 
     275 
     276 
    144277    all: 
     278 
    145279      .general: 
     280 
    146281        tax:        19.6 
    147282 
     283 
     284 
    148285      mail: 
     286 
    149287        webmaster:  webmaster@example.com 
    150288 
     289 
     290 
    151291In diesem Beispiel ist `mail` ein Schlüssel und `general` nur eine Kategorie. Alles funktioniert, als ob die Kategorie nicht besteht. Wie der Codeabschnitt 5-10 zeigt ist der `tax` Parameter eigentlich ein direktes Element des `all` Schlüssels. 
    152292 
     293 
     294 
    153295Codeabschnitt 5-10 - Die Kategorien stehen nur für die Lesbarkeit dort und werden in Wahrheit ignoriert 
    154296 
     297 
     298 
    155299    all: 
     300 
    156301      tax:          19.6 
    157302 
     303 
     304 
    158305      mail: 
     306 
    159307        webmaster:  webmaster@example.com 
    160308 
     309 
     310 
    161311>**SIDEBAR** 
     312 
    162313>Und wenn Ihnen YAML nicht zusagt 
    163 
     314 
     315
     316 
    164317>YAML ist lediglich eine Schnittstelle um die Einstellungen zu definieren, dass von PHP-Code verwendet wird. Somit endet die Definition einer YAML-Datei mit der Umwandlung in PHP. Nachdem Sie die Anwendung durchgegangen sind, überprüfen Sie die gecachten Konfigurationen (zum Beispiel in `cache/myapp/dev/config/`). Dort finden Sie die PHP-Dateien die Ihrer YAML Konfigurationen entsprechen. Sie werden später in diesen Kapitel mehr über die gecachten Konfigurationen erfahren. 
    165 
     318 
     319
     320 
    166321>Die guten Nachrichten sind, daß, wenn Sie YAML-Datein nicht einsetzen möchten, Sie in PHP oder über ein anderes Format (XML, INI und so weiter) das tun können was die Konfigurationsdatein eigenhändig tun. Während dieses Buches erfarhen Sie alternative Möglichkeiten, Konfigurationen ohne YAML zu definieren, und Sie erlernen sogar, die Hanlder für symfony Konfigurationen zu ersetzen (siehe Kapitel 19). Wenn Sie sie geschickt benutzen, ermöglichen Ihnen diese Tricks, Konfigurationsdateien zu überbrücken oder Ihr eigenes Konfigurationsformat zu definieren. 
    167322 
     323 
     324 
    168325###  Hilfe, eine YAML-Datei zerstörte meine APP! 
    169326 
     327 
     328 
    170329Die YAML-Dateien werden in PHP Hashes und Array übersetzt, und dann werden die Werte,  um das Verhalten der Ansicht, des Steuerpults oder des Modells zu ändern, in den verschiedenen Teilen der Anwendung verwendet. Viele Male, wenn ein Problem in einer YAML-Datei gitb, wird es nicht, bis es die Notwendigkeiten den Wert zu verwenden auftritt, entdeckt. Außerdem hängt der Fehler oder die Ausnahme, die dann geworfen wird, normalerweise nicht offenbar mit der YAML Konfigurationsdatei zusammen. 
    171330 
     331 
     332 
    172333Wenn Ihre Anwendung, bei der Abarbeitung einer Konfigurationsänderung, plötzlich stoppt, sollten Sie prüfen, ob sich nicht irgendwelche von den allgemeinen Fehlern des unaufmerksamen YAML Kodierers eingeschlichen haben: 
    173334 
     335 
     336 
    174337  * Es fehlt ein Leerzeichen zwischen den Schlüssel und dem Wer 
    175338 
     339 
     340 
    176341        key1:value1      # Nach dem : fehlt ein Leerzeichen 
    177342 
     343 
     344 
    178345  * Die Schlüsseln in einer Reihenfolge werden nicht die gleiche Weise eingedrückt: 
    179346 
     347 
     348 
    180349        all: 
     350 
    181351          key1:  value1 
     352 
    182353           key2: value2  # Einrückung ist nicht dieselbe wie die anderen Elementen in der Reihenfolge 
     354 
    183355          key3:  value3 
    184356 
     357 
     358 
    185359  * Es gibt eine reserviertes YAML-Zeichen in einem Schlüssel oder in einem Wert, ohne Zeichenkettebegrenzungen: 
    186360 
     361 
     362 
    187363        message: tell him: go way    # :, [, ], { and } sind reserviert in YAML 
     364 
    188365        message: 'tell him: go way'  # Korrekte Syntax 
    189366 
     367 
     368 
    190369  * Sie ändern eine Kommentarzeile 
    191370 
     371 
     372 
    192373        # key: value     # Wird wegen dem # nie in Betracht gezogen 
    193374 
     375 
     376 
    194377  * Sie weisen Werte mit dem gleichen Schlüsselnamen zweimal auf die gleiche Ebende zu: 
    195378 
     379 
     380 
    196381        key1: value1 
     382 
    197383        key2: value2 
     384 
    198385        key1: value3     # key1 wird zweimal definiert, der Wert wird dem letztem Schlüssel zugewiesen 
    199386 
     387 
     388 
    200389  * Sie denken, daß der Wert einer Einstellung ein spezieller Typ ist, während es immer eine Zeichenkette ist, bis Sie den Wert umwandeln: 
    201390 
     391 
     392 
    202393        income: 12,345   # Bis Sie es umwandeln, ist der Wert noch eine Zeichenkette 
    203394 
     395 
     396 
    204397Übersicht der Konfigurationsdateien 
     398 
    205399----------------------------------- 
    206400 
     401 
     402 
    207403Die Konfigurationen werden in Dateien, die in Themen unterteilt sind, abgelegt. Die Dateien enthalten Parameterdefinitionen oder Einstellungen. Einige dieser Parameter können auf einigen Ebenen (Projekt, Anwendung und Modul) überschrieben werden; einige sind zu einer bestimmten Ebene spezifisch. Die folgenden Kapitel beschäftigen sich mit Konfigurationsdateien die sich auf das Hauptthema beziehen. Währenddessen sich das Kapitel 19 mit der fortgeschrittenen Konfiguration auseinandersetzt. 
    208404 
     405 
     406 
    209407### Die Projektkonfiguration 
    210408 
     409 
     410 
    211411Standardmäßig erstellt symfony eine Reihe von Projektkonfigurationsdateien. Diese Dateien befinden sich im Verzeichnis `meinprojekt/config/`. 
    212412 
     413 
     414 
    213415  * `config.php`: Dieses Datei, ist die allererste Datei, die bei jeder Anfrage bzw. jeden Befehl ausgefürht wird. Es beinhaltet den Pfad zum Framework, der auch, um eine andere Installation zu verwenden, geändert werden kann. Wenn Sie einige `define` definitionen am Ende dieser Datei hinzufügen, sind die Konstanten für jede Anwendung des Projektes zugänglich. Im Kapitel 19 erfahren Sie mehr über den Gebrauch diese Datei. 
     416 
    214417  * `databases.yml`: In dieser Datei werden die Zugangsdaten und die Verbindungseinstellungen der Datenbank definiert (Host, Login, Passwort, Datenbankname, u.s.w.). In Kapitel 8 erfahren Sie mehr über das Thema. Es kann auch über die Anwendungsebene überschrieben werden. 
     418 
    215419  * `properties.ini`: Diese Datei enthält einige Paramter die von der Befehlszeilenwerkzeug verwendet wird, das einen Projektnamen sowie die Verbindungsdaten eines entfernten Server beinhaltet. Lesen Sie Kapitel 16 um eine Überblick der Eigenschaften dieser Datei zu erhalten. 
     420 
    216421  * `rsync_exclude.txt`: Diese Datei legt fest, welche Verzeichnisse von der Synchrounisierung zwischen den Servern ausgeschlossen werden. Dazu mehr in Kapitel 16. 
     422 
    217423  * `schema.yml` and `propel.ini`: Diese Konfigurationsdateien, mit Verbindungseinstellungen, werden von Propel verwendet (Die ORM Schicht von symfony). Sie werden benutzt, um die Propel Bibliotheken mit den Klassen von symfony und den Daten Ihres Projekts zu arbeiten. `schema.yml` wird das Beziehungs Datenmodel des Projektes dargestellt. `propel.ini` wird automatisch erzeugt, so dass Sie vermutlich nichts ändern müssen. Wenn Sie Propel nicht verwenden, sind diese Dateien nicht erfoderlich. In Kapitel 8 handelt den Gebrauch der Datei genauer ab. 
    218424 
     425 
     426 
    219427Diese Dateien werden meistens durch externe Komponenten oder durch die Befehlzeile benutzt. Oder sie müssen sogar, bevor der YAML Parser vom Framework geladen werden kann, verarbeitet werden. Das ist der Grund, warum einige von ihnen nicht das YAML Format verwenden. 
    220428 
     429 
     430 
    221431### Die Konfiguration der Anwendung 
    222432 
     433 
     434 
    223435Der Hauptteil der Konfiguration ist die der Anwendung. Es werden, für den Front-Controller (im `web` Verzeichnis) die Hauptkonstanten, in den YAML Dateien, die in der Anwendung im `config/` Verzeichnis abgelegt sind, in den `i18n/` Verzeichnissen für die Internationalisierung Dateien und in den Framework für unsichtbare --obgleich nützlich-- zusätzliche Konfigurationen der Anwendung definiert. 
    224436 
     437 
     438 
    225439#### Die Konfiguration vom Front Controller 
    226440 
     441 
     442 
    227443Die allererste Konfiguration der Anwendung finden Sie  im Front Controller. Dort befindet sich das allererste Skript, der durch eine Anfrage ausgeführt wird. Werfen Sie einen Blick auf `web/index.php` im Codeabschnitt 5-11. 
    228444 
     445 
     446 
    229447Codeabschnitt 5-11 - Die Voreinstellung eines Front Controller 
    230448 
     449 
     450 
    231451    [php] 
     452 
    232453    <?php 
    233454 
     455 
     456 
    234457    define('SF_ROOT_DIR',    dirname(__FILE__).'/..'); 
     458 
    235459    define('SF_APP',         'myapp'); 
     460 
    236461    define('SF_ENVIRONMENT', 'prod'); 
     462 
    237463    define('SF_DEBUG',       true); 
    238464 
     465 
     466 
    239467    require_once(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php'); 
    240468 
     469 
     470 
    241471    sfContext::getInstance()->getController()->dispatch(); 
    242472 
     473 
     474 
    243475Nachdem man den Namen der Anwendung (`myapp`) und der Umgebung (`prod`) definiert hat, wird vor dem Abfertigen die allgemeine Konfigurationsdatei aufgerufen. Einige nützliche Konstanten werden hier definiert: 
    244476 
     477 
     478 
    245479  * `SF_ROOT_DIR`: Das Wurzelverzeichnis des Projekts (normalerweise, sollte man die Voreinsetllung beibehalten, es sei denn Sie ändern die Struktur der Dateien). 
     480 
    246481  * `SF_APP`: Der Name der Anwendung im Projekt. Notwendig um die Pfade der Dateien zu erstellen. 
     482 
    247483  * `SF_ENVIRONMENT`: Der Name der Umgebung (`prod`, `dev`, oder andere projektspezifische Umgebungen das Sie definiert haben). Stellt fest, welche Konfigurationseinstellungen verwendet werden sollen. Umgebungen werden später in diesem Kapitel behandelt. 
     484 
    248485  * `SF_DEBUG`: Aktivierung des Debug-Modes (Siehe Kapitel 16 für Details). 
    249486 
     487 
     488 
     489Wenn Sie einen dieser Werte ändern möchten, benötigen Sie vermutlich einen zusätzlichen Front Controller. Das folgende Kapitel erklärt Ihnen mehr über Front Controller und wie man ein Neues erzeugt. 
     490 
     491 
     492 
    250493>**SIDEBAR** 
     494 
    251495>Das Wurzelverzeichnis kann überall sein 
    252 
     496 
     497
     498 
    253499>Nur die Dateien und die Skripte, die unter dem Wurzelverzeichnis Web abgelegt sind (das ` web/` Verzeichnis in einem symfony Projekt), sind von Außen erreichbar. Die Front Controller Skripte, die Bilder, die Style Sheets und die Javascripdateien sind öffentlich. Alle anderen Dateien müssen außerhalb des Webverzeichnisses abgelegt werden -- das bedeutet, dass sie irgendwoanders abgelegt werden können. 
    254 
     500 
     501
     502 
    255503> Die nicht öffentlichen Dateien eines Projekts, werden vom Front Controller über den Pfad von der Konstante SF_ROOT_DIR erreicht. Normalerweise befindet sich das Wurzelverzeichnis eine Ebene über dem `web/` Verzeichnis. Es kann jedoch eine vollständig andere Struktur definiert werden. Stellen Sie sicher, dass Ihre Hauptverzeichnisstrukturen von zwei Verzeichnissen gebildet werden, eine für die öffentlichen und eine für den privat Bereich: 
    256 
    257 
     504 
     505
     506 
     507
     508 
    258509>     symfony/    # Privater Bereich 
     510 
    259511>       apps/ 
     512 
    260513>       batch/ 
     514 
    261515>       cache/ 
     516 
    262517>       ... 
     518 
    263519>     www/        # Öffentlicher Bereich 
     520 
    264521>       images/ 
     522 
    265523>       css/ 
     524 
    266525>       js/ 
     526 
    267527>       index.php 
    268 
    269 
     528 
     529
     530 
     531
     532 
    270533>In diesem Fall ist das Wurzelverzeichnis das ` symfony/` Verzeichnis. So muss der Front Controller `index.php`, wie folgt, einfach das `SF_ROOT_DIR` definieren, damit die Anwendung funktioniert: 
    271 
     534 
     535
     536 
    272537>     define('SF_ROOT_DIR', dirname(__FILE__).'/../symfony'); 
    273538 
     539 
     540 
    274541Kapitel 19 finden Sie mehr Informationen darüber, wie Sie symfony so einrichten, damit es auf einer spezifischen Verzeichnisstruktur arbeitet. 
    275542 
     543 
     544 
    276545#### Die Konfiguration der Hauptanwendung 
    277546 
     547 
     548 
    278549Die Konfiguration der Hauptanwendung werden in Dateien gespeichert, die im `myproject/apps/myapp/config/` Verzeichnis abgelegt werden: 
    279550 
     551 
     552 
    280553  * `app.yml`: Diese Datei enthält anwendungsspezifische Konfigurationen; das heißt, globale Variablen, die Geschäfts- oder Anwendungslogik zu einer Anwendung definieren, wo es nicht Notwendig ist diese in einer Datenbank abzulegen. Steuersätze, Versandkosten und E-mail Adressen werden häufig in dieser Datei gespeichert. Sie ist bei der Voreinstellung leer. 
     554 
    281555  * `config.php`: Diese Datei lädt das Urprogramm der Anwendung, dies bedeutet, dass sie alle grundlegenden Initialisierungen erldedigt, um die Anwendung starten zu können. Hier können Sie Ihre Verzeichnisstruktur oder anwendungsspezifische Konstanten definieren (Kapitel 19 liefert mehr Details darüber). Es beginnt, indem es die `config.php` vom Projekt einschließt. 
     556 
    282557  * `factories.yml`: Symfony definiert eigene Klassen, um die Ansicht, die Anfrage, die Antwort, die Sitzung und so weiter abzuarbeiten . Wenn Sie Ihre eigenen Klassen benutzen möchten, ist diese Datei die Richtige, wo Sie sie spezifizieren können. In Kapitel 17 finden Sie mehr Informationen darüber. 
     558 
    283559  * `logging.yml`: Diese Datei definiert die Genauigkeit der Informationen die in den Logs notiert werden muss, um Ihnen das Managen und das aufspühren der Fehler Ihrer Anwendung zu helfen. Der Gebrauch dieser Konfigurationdatei wird in Kapitel 16 erklärt. 
     560 
    284561  * `routing.yml`: In dieser Datei, werden die Regeln des Routings, das die unlesbares und für Lesezeichen nicht geeigneten URLs in "smart" und deutlichere URLs umwandelt gespeichert. Bei einer neuen Anwendung exestieren bereits einige voreingestellten Richtlinien. Kapitel 9 ist ganz dem Thema Verweise und Routing gewidmet. 
     562 
    285563  * `settings.yml`: Die Haupteinstellungen einer symfony Anwendung werden in dieser Datei definiert. Hier können Sie, bei Internationalisierung die voreingestellte Sprache, das Timeout der Anfrge und ob das Cachen eingeschaltet wird angeben. Mit einer "Einlinien" Änderung in dieser Datei, können Sie die Anwendung schließen und können somit die Wartung oder das Upgraden eines der Bestandteile durchführen. Die allgemeinen Einstellungen und ihr Gebrauch wird in Kapitel 19 beschrieben. 
     564 
    286565  * `view.yml`: Die Struktur der voreingestellten Ansicht (Name des Layouts, des Titels und der Meta-Tags; Voreingestellte Sytelsheets- und Javascriptdateien die eingebunden werden; Voreingestellter Content-Type und so weiter) wird in dieser Datei eingestellt. Sie definiert auch den Standardwert von Meta und von Titel-Tag. Kapitel 7 erklärt Ihnen mehr über diese Datei. Diese Einstellungen können für jedes Modul überschrieben werden. 
    287566 
     567 
     568 
    288569#### Die Konfiguration der Internationalisierung 
    289570 
     571 
     572 
    290573Internationalisierte Anwendungen können Seiten in einigen Sprachen anzeigen. Dieses erfordert eine spezifische Konfiguration. Es gibt zwei Plätze für die Konfiguration der Internationalisierung: 
    291574 
     575 
     576 
    292577  * `i18n.yml` der Anwendung im `config/` Verzeichnisses: Diese Datei definiert allgemeine Einstellungen der Übersetzungen, wie die voreingestellte Kultur für die Übersetzung, ob die Übersetzungen von der Datei oder von einer Datenbank kommen, sowie deren Format. 
     578 
    293579  * Übersetzungdateien im `i18n/` Verzeichnis der Anwendung: Diese sind im Allgemeinen die Wörterbücher und geben eine Übersetzung für jede der Phrasen die in Templates der Anwendung verwendet werden und somit die Seiten den übersetzten Text anzeigen, wenn der Benutzer zwischen den Sprachen schaltet. 
    294580 
     581 
     582 
    295583Beachten Sie, dass die Aktivierung der i18n Eigenschaften in der ` settings.yml` Datei eingestellt wird. Sie finden in Kapitel 13 mehr Informationen über diese Eigenschaften. 
    296584 
     585 
     586 
    297587### Die Konfiguration der Module 
    298588 
     589 
     590 
    299591Bei der Voreinstellung hat ein Modul keine spezifische Konfiguration. Aber wenn erforderlich können Sie einige Einstellungen der Anwendung für ein gegebenes Modul überschrieben werden. Zum Beispiel können Sie die HTML Beschreibung aller actions eines Moduls ändern, oder eine spezifische Javascriptdatei mit einbinden. Sie können auch beschließen neue Parameter hinzuzufügen, die einem spezifischen Modul eingeschränkt gekapselt abgelegt werden. 
    300592 
     593 
     594 
    301595Wie Sie wahrscheinlich Vermuten, müssen sich die Konfigurationsdateien eines Moduls im `myproject/apps/myapp/modules/mymodule/config/` Verzeichnis befinden. Diese Dateien sind, wie folgt: 
    302596 
     597 
     598 
    303599  * `generator.yml`: Für die Module, die entsprechend einer Datenbanktabelle (Scaffoldings und Administrations) erzeugt werden, definiert diese Datei, wie die Schnittstelle die Datensätze und Spalten anzeigt, und welche Interaktionen dem Benutzer angeboten werden (Filter, sortieren, Buttons und so weiter). In Kapitel 14 wird das Thema näher erklärt. 
     600 
    304601  * `module.yml`: Diese Datei enthält Benutzerspezifischen Parameter, die zu einem Modul zugeorndet sind (gleichwertig mit dem `app.`yml, aber uf den Modulebene) und Konfigurationen für actions. Im Kapitel 6 erfahren Sie mehr drüber. 
     602 
    305603  * `security.yml`: Diese Datei beschränkt den Zugang für actions. Hier können Sie spezifizieren, dass eine Seite nur durch zugelassene Benutzer oder durch eine Teilmenge zugelassene Benutzer mit Ausnahmegenehmigungen angezeigt werden darf. In Kapitel 6 wird das Thema näher erklärt. 
     604 
    306605  * `view.yml`: Diese Datei enthält Einstellungen für die Ansichten von einer oder alle actions eines Moduls. Sie überschreibt die `view.yml` von der Anwendung und wird in Kapitel 7 beschrieben. 
     606 
    307607  * Dateien für die Validierung der Daten: Obgleich die YAML Dateien für die Validierung der Daten eines Formulars sich im `validate/` Verzeichnis anstelle vom `config/` befinden, sind diese ebenfalls Konfigurationsdateien eines Moduls. Sie erlernen in Kapitel 10 wie man sie einsetzt. 
    308608 
     609 
     610 
    309611Die meisten Konfigurationsdateien der Module bieten die Fähigkeit an, Parameter für alle Ansichten oder alle actions eines Moduls zu definieren oder für eine Teilmenge von ihnen. 
    310612 
     613 
     614 
    311615>**SIDEBAR** 
     616 
    312617>Zu viele Dateien? 
    313 
     618 
     619
     620 
    314621>Sie konnten durch die Anzahl den Konfigurationsdateien überwältigt werden, die in der Anwendung vorhanden sind. Aber behalten Sie bitte das folgende Punkte im Auge: 
    315 
     622 
     623
     624 
    316625>Die meiste Zeit besteht keine Notwendigkeit die Konfiguration zu ändern, da die voreingestellten Konventionen die allgemeinen Anforderungen genügen. Jede Konfigurationsdatei hängt mit einer bestimmten Eigenschaft zusammen und die folgenden Kapitel schildern ihren Gebrauch eins nach dem anderen. Wenn Sie sich auf eine einzelne Datei konzentrieren, können Sie sofort erkennen was es tut und wie es organisiert ist. Für die professionelle Webentwicklung wird die voreingestellte Konfiguration häufig nicht vollständig eingestellt. Die Konfigurationsdatei lassen eine einfache Änderung der symfony Einstellungen ohne Code zu. Stellen Sie sich die Menge des PHP Codes vor die notwendig ist, um die selbe Steuerung zu erzielen. Wenn die ganzen Konfigurationen in einer Datei wären, wäre die Datei nicht nur vollständig unlesbar, Sie könnten zudem keine Konfigurationen auf mehreren Ebenen neu definieren (sehen Sie das "Konfiguration kaskadieren" unterteilen später in diesem Kapitel). 
    317 
     626 
     627
     628 
    318629>Das Konfigurationssystem ist eine der großen Stärken von symfony, weil es symfony verwendbar für fast jede Art der Webentwicklung bildet, und nicht nur für die, die das Framework ursprünglich bestimmt war. 
     630 
     631 
    319632 
    320633Umgebungen 
    361674> 
    362675>Um eine neue Umgebung hinzuzufügen, ist es nicht notwendig ein neues Verzeichnis zu erstellen oder die symfony CLI zu verwenden. Erstellen Sie einfach einen neuen Front Controller und ändern Sie die Definition der Umgebungsnamen in der Datei. Diese Umgebung übernimmt die ganze Standardkonfiguration plus die allgemeinen Einstellungen, die für alle Umgebung gelten. Das folgende Kapitel zeigt Ihnen, wie das ereichen können. 
    363  
    364676 
    365677## Die Konfiguration Kaskade 
    570882Wenn die Komplexität an den kundenspezifischen Parametern so sehr ansteigt, um sie in der `app.yml` Syntax abzulegen, können Sie Ihre eigene Syntax definieren. Für diesen Fall, können Sie die Konfiguration in einer neuen Datei speichern, dass von einem neunen Konfigurationshandler interpretiert werden kann. Im Kapitel 19 erfahren Sie mehr über Konfigurationshandler. 
    571883 
     884Tips um mehr von den Konfigurationsdatien rasuzuholen 
     885----------------------------------------------------- 
     886 
     887Es gibt einige Tricks die kennenlernen sollten, bevor Sie Ihre eigene YAML Dateien schreiben. Sie erlauben Ihnen die Redundanz der Konfigurationen zu vermeiden und Ihre eigenen YAML Formate zu ordnen. 
     888 
     889### Konstanten in YAML Konfigurationsdateien verwenden 
     890 
     891Einige Konfigurationseinstellungen beruhen auf dem Wert anderer Einstellungen. Um zu vermeiden, den gleichen Wert zweimal einzustellen, unterstütz symfony konstanten in YAML Dateien. Durch das Antreffen eines Einstellungsnamen (einer, der durch `sfConfig::get()` aufgerufen werden kann) in den Großbuchstaben das von `%` Zeichen umgeben ist, ersetzt der Konfigurationhandler sie mit dem gegenwärtigen Wert.  
     892 
     893Codeabschnitt 5-20 - Konstanten in YAML Konfigurationsdateien verwenden. Ein Beispiel aus `autoload.yml` 
     894 
     895    autoload: 
     896      symfony: 
     897        name:           symfony 
     898        path:           %SF_SYMFONY_LIB_DIR% 
     899        recursive:      on 
     900        exclude:        [vendor] 
     901 
     902Der Parameter Path bekommt den Wert, der von `sfConfig::get('sf_symfony_lib_dir')` zurückgegeben wird, zugewiesen. Wenn Sie eine Konfigurationsdatei auf andere aufbauen möchten, müssen Sie überprüfen, ob die Datei, die Sie weitergeben möchten, bereits geparsed wurde (Werfen Sie einen Blick in die symfony Quellen, um die Reihenfolge herauszufinden, in dem die Konfigurationsdateien geparsed werden). `app.yml `ist eine der letzten Datei, somit kann sie auf andere Konfigurationen zurückgreifen. 
     903 
     904#Verwenden von Scriptable Konfiguration 
     905 
     906Es kann geschehen, dass Ihre Konfiguration auf externen Parametern beruht (wie einer Datenbank oder einer anderen Konfigurationsdateien). Um diese besonderen Fälle zu abzuhandeln, werden die symfony Konfigurationsdateien als PHP-Dateien geparsed, bevor die YAML-Datei geparsed wird. Das bedeutet, dass Sie PHP-Code in YAML-Dateien eingeben können, wie in Codeabschnitt 5-21. 
     907 
     908Codeabschnitt 5-21 - YAML Datei kann PHP-Code beinhalten 
     909 
     910    all: 
     911      translation: 
     912        format:  <?php echo (sfConfig::get('sf_i18n') == true ? 'xliff' : 'none')."\n" ?> 
     913 
     914Beachten Sie, dass die Konfiguration in einem sehr frühen Stadium eines Antrags geparsed wird und Sie somit keine von symfony eingebauten Methoden oder Funktionen zur Verfügung haben. 
     915 
     916Da auch der Sprachkonstrukt `echo` einen Wagenrücklauf nicht Stanardmäßig hinzufügt, müssen Sie ein "\n" hinzufügen oder benutzen Sie den `echoln`Helfer, um das YAML Format gültig zu halten. 
     917 
     918    all: 
     919      translation: 
     920        format:  <?php echoln sfConfig::get('sf_i18n') == true ? 'xliff' : 'none' ?> 
     921 
     922>**CAUTION** 
     923 
     924>In der Produkivumgebung wird die Konfiguration gecacht, also werden die Konfigurationsdateien nur einmal geparsed (und durchgeführt), nachdem der Cache geleert wurde. 
     925 
     926 
     927 
     928### Eigene YAML Datein auslesen 
     929 
     930 
     931 
     932Wann immer Sie eine YAML Datei direkt auslesen möchten, können Sie die `sfYaml` Klasse benutzen. Es ist ein YAML Parser, der eine YAML Datei zu ein assoziatives Array erstellt. Codeabschnitt 5-22 stellt ein Beispiel einer YAML Datei dar und Codeabschnitt 5-23 zeigt wie es geparst wird. 
     933 
     934 
     935 
     936Codeabschnitt 5-22 - Datei `test.yml` 
     937 
     938 
     939 
     940    house: 
     941 
     942      family: 
     943 
     944        name:     Doe 
     945 
     946        parents:  [John, Jane] 
     947 
     948        children: [Paul, Mark, Simone] 
     949 
     950      address: 
     951 
     952        number:   34 
     953 
     954        street:   Main Street 
     955 
     956        city:     Nowheretown 
     957 
     958        zipcode:  12345 
     959 
     960 
     961 
     962Codeabschnitt 5-23 - Verwendung der `sfYaml` Klasse um aus eine YAML Datei ein assoziatives Array zu erstellen. 
     963 
     964 
     965 
     966    [php] 
     967 
     968    $test = sfYaml::load('/path/to/test.yml'); 
     969 
     970    print_r($test); 
     971 
     972 
     973 
     974    Array( 
     975 
     976      [house] => Array( 
     977 
     978        [family] => Array( 
     979 
     980          [name] => Doe 
     981 
     982          [parents] => Array( 
     983 
     984            [0] => John 
     985 
     986            [1] => Jane 
     987 
     988          ) 
     989 
     990          [children] => Array( 
     991 
     992            [0] => Paul 
     993 
     994            [1] => Mark 
     995 
     996            [2] => Simone 
     997 
     998          ) 
     999 
     1000        ) 
     1001 
     1002        [address] => Array( 
     1003 
     1004          [number] => 34 
     1005 
     1006          [street] => Main Street 
     1007 
     1008          [city] => Nowheretown 
     1009 
     1010          [zipcode] => 12345 
     1011 
     1012        ) 
     1013 
     1014      ) 
     1015 
     1016    ) 
     1017 
     1018 
     1019 
     1020 
     1021 
     1022Zusammenfassung 
     1023 
     1024--------------- 
     1025 
     1026 
     1027 
     1028Das Konfigurationssystem von Symfony setzt als Sprache YAML ein, um einfach und lesbar zu sein. Die Fähigkeit, mehrere Umgebungen zu behandeln und Parameter durch eine definierte Kaskaden-Angebotvielseitige verwendbarkeit auf den Entwickler einzustellen. Einige der Konfigurationen können innerhalb des Codes über das `sfConfig` Objekt, besonders die Einstellungen der Anwendung die in der `app.yml` Datei gespeichert werden, erreicht werden. 
     1029 
     1030Ja symfony hat viele Konfigurationsdateien, aber dieser Ansatz bildet es anpassungsfähiger. Denken Sie daran, dass Sie keine Notwendigkeit haben sich damit auseinander zu setzen, es sei denn Ihre Anwendung erfordert ein hohes maß an Anpassungen. 
     1031 
    5721032 
    5731033}}}