Development

Documentation/de_DE/book/1.0/19-Mastering-Symfony-s-Configuration-Files (diff)

You must first sign up to be able to contribute.

Changes between Version 2 and Version 3 of Documentation/de_DE/book/1.0/19-Mastering-Symfony-s-Configuration-Files

Show
Ignore:
Author:
Jan.Kunzmann (IP: 87.234.70.169)
Timestamp:
03/27/08 17:46:44 (9 years ago)
Comment:

60%

Legend:

Unmodified
Added
Removed
Modified
  • Documentation/de_DE/book/1.0/19-Mastering-Symfony-s-Configuration-Files

    v2 v3  
    11'''ARBEITSENTWURF ROHÜBERSETZUNG / TRANSLATION WORKING DRAFT'''[[BR]] 
    2 Originaldokument: http://svn.symfony-project.com/doc/trunk/book/19-Mastering-Symfony-s-Configuration-Files.txt, Version 4935 vom 2007-08-30[[BR]] 
    3 Übersetzungsfortschritt: 50%[[BR]] 
     2Originaldokument: http://svn.symfony-project.com/doc/trunk/book/19-Mastering-Symfony-s-Configuration-Files.txt, Version 7705 vom 2008-03-01[[BR]] 
     3Übersetzungsfortschritt: 60%[[BR]] 
    44Übersetzung: JK[[BR]] 
    55Korrekturfortschritt: 0%[[BR]] 
    1515-------------------------------------- 
    1616 
    17 Die Datei `meineapp/config/settings.yml` enthält Symfonys Hauptkonfiguration für die Anwendung `meineapp`. Obwohl Sie bereits in den vorangegangenen Kapiteln die Funktion vieler Einstellungen in dieser Datei gesehen haben, wollen wir Sie hier nochmal rekapitulieren. 
     17Die Datei `frontend/config/settings.yml` enthält Symfonys Hauptkonfiguration für die Anwendung `meineapp`. Obwohl Sie bereits in den vorangegangenen Kapiteln die Funktion vieler Einstellungen in dieser Datei gesehen haben, wollen wir Sie hier nochmal rekapitulieren. 
    1818 
    1919Wie in Kapitel 5 erklärt, ist diese Datei abhängig von der Umgebung, das bedeutet, dass jede Einstellung für jede Umgebung einen anderen Wert annehmen kann. Sicher erinnern Sie sich daran, dass auf jeden der hier definierten Parameter auch aus dem PHP-Code über die Klasse `sfConfig` zugegriffen werden kann. Der Parametername ist der Name der Einstellung mit einem vorangestellten sf_. Wenn Sie z.B. den Wert des Parameters `cache` ermitteln wollen, rufen Sie einfach `sfConfig::get('sf_cache')` auf. 
    136136Die Datei `settings.yml` enthält noch einige weitere Parameter, die intern vom Symfony-Kern für bestimmte Verhaltensweisen verwendet werden. Listing 19-1 zeigt sie so, wie sie in der Konfigurationsdatei auftauchen. 
    137137 
    138 Listing 19-1 - Verschiedene Konfigurationseinstellungen, in `meineapp/config/settings.yml` 
     138Listing 19-1 - Verschiedene Konfigurationseinstellungen, in `frontend/config/settings.yml` 
    139139 
    140140    # Kommentare aus den Kernklassen des Frameworks entfernen, wie in core_compile.yml angegeben 
    141141    strip_comments:         on 
    142     # Timeout der Sitzung, in Sekunden 
    143     timeout:                1800 
    144142    # Maximale Anzahl von forward-Aufrufen in einer Action, bevor eine Exception geschmissen wird 
    145143    max_forwards:           5 
    152150>Eigene Einstellungen für Ihre Anwendung hinzufügen 
    153151> 
    154 >Die Datei `settings.yml` spezifiziert die Symfony-Einstellungen für eine Anwendung. Wie bereits in Kapitel 5 angesprochen, ist die beste Stelle, um eigene Einstellungen festzulegen, die Datei `meineapp/config/app.yml`. Diese Datei berücksichtigt ebenfalls die gesetzte Umgebung, und auf die Einstellungen, die Sie hier vornehmen, können Sie über die Klasse sfConfig mit dem Prefix `app_` zugreifen. 
     152>Die Datei `settings.yml` spezifiziert die Symfony-Einstellungen für eine Anwendung. Wie bereits in Kapitel 5 angesprochen, ist die beste Stelle, um eigene Einstellungen festzulegen, die Datei `frontend/config/app.yml`. Diese Datei berücksichtigt ebenfalls die gesetzte Umgebung, und auf die Einstellungen, die Sie hier vornehmen, können Sie über die Klasse sfConfig mit dem Prefix `app_` zugreifen. 
    155153> 
    156154> 
    177175  * `meinprojekt/lib/` 
    178176  * `meinprojekt/lib/model` 
    179   * `meinprojekt/apps/meineapp/lib/` 
    180   * `meinprojekt/apps/meineapp/modules/meinmodul/lib` 
     177  * `meinprojekt/apps/frontend/lib/` 
     178  * `meinprojekt/apps/frontend/modules/meinmodul/lib` 
    181179 
    182180Im Konfigurationsverzeichnis der Standardanwendung befindet sich keine `autoload.yml`. Wenn Sie die Einstellungen des Frameworks verändern wollen - z.B. weil sich Ihre Klassen an einem anderen Ort der Verzeichnisstruktur befinden -, erzeugen Sie eine leere `autoload.yml` und überschreiben darin die Einstellungen aus `$sf_symfony_data_dir/config/autoload.yml` bzw. fügen Ihre eigenen hinzu. 
    284282    sf_root_dir           # meinprojekt/ 
    285283                          #   apps/ 
    286     sf_app_dir            #     meineapp
     284    sf_app_dir            #     frontend
    287285    sf_app_config_dir     #       config/ 
    288286    sf_app_i18n_dir       #       i18n/ 
    292290    sf_bin_dir            #   batch/ 
    293291                          #   cache/ 
    294     sf_base_cache_dir     #     meineapp
     292    sf_base_cache_dir     #     frontend
    295293    sf_cache_dir          #       prod/ 
    296294    sf_template_cache_dir #         templates/ 
    309307    sf_web_dir            #   web/ 
    310308    sf_upload_dir         #     uploads/ 
     309 
     310Jede Pfadangabe in ein Schlüsselverzeichnis wird von einem Parameter bestimmt, der mit `_dir` endet. Verwenden Sie stets die Pfadvariablen anstelle von konstanten Angaben (egal ob relativ oder absolut), so dass Sie sie später ändern können, wenn es notwendig sein sollte. Wenn Sie z.B. eine Datei in das Verzeichnos `uploads/` verschieben wollen, sollten Sie `sfConfig::get('sf_upload_dir')` verwenden anstatt `SF_ROOT_DIR.'/web/uploads/'`. 
     311 
     312Die Verzeichnisstruktur eines Moduls wird erst zur Laufzeit definiert, wenn das Routing-System den Modulnamen (`$module_name`) ermittelt hat. Sie wird gemäßg der Pfadnamen aufgebaut, die in der Datei `constants.php` angegeben sind, wie in Listing 19-4 gezeigt. 
     313 
     314Listing 19-4 - Variablen für die standardmäßige Verzeichnisstruktur eines Moduls 
     315 
     316    sf_app_module_dir                 # modules/ 
     317    module_name                       #  meinmodul/ 
     318    sf_app_module_action_dir_name     #    actions/ 
     319    sf_app_module_template_dir_name   #    templates/ 
     320    sf_app_module_lib_dir_name        #    lib/ 
     321    sf_app_module_view_dir_name       #    views/ 
     322    sf_app_module_validate_dir_name   #    validate/ 
     323    sf_app_module_config_dir_name     #    config/ 
     324    sf_app_module_i18n_dir_name       #    i18n/ 
     325 
     326Folglich wird der Pfad zu dem Verzeichnis `validate/` des aktuellen Moduls zur Laufzeit dynamisch zusammengesetzt: 
     327 
     328    [php] 
     329    sfConfig::get('sf_app_module_dir').'/'.$module_name.'/'.sfConfig::get('sf_app_module_validate_dir_name') 
     330 
     331### Anpassen der Verzeichnisstruktur 
     332 
     333Die standardmäßige Verzeichnisstruktur müssen Sie möglicherweise anpassen, wenn Sie eine Anwendung für einen Kunden entwickeln, der bereits eine definierte Verzeichnisstruktur hat und nicht gewillt ist, sie so zu ändern, dass sie der Logik von Symfony entspricht. Indem Sie die Variablen `sf_XXX_dir` und `sf_XXX_dir_name` mit `sfConfig` überschreiben, können Sie Symfony mit einer völlig anderen Verzeichnisstruktur arbeiten lassen. Der beste Ort, um dies zu erreichen, ist die anwendungsweite `config.php`. 
     334 
     335>**ACHTUNG** 
     336>Verwenden Sie die `config.php` der Anwendung, nicht die des Projekts, um die Variablen `sf_XXX_dir` und `sf_XXX_dir_name` mit `sfConfig` zu überschreiben. Die Datei `config/config.php` des Projekts wird in einem sehr frühen Stadium des Requests geladen. Die Klasse `sfConfig` gibt es zu diesem Zeitpunkt allerdings noch nicht, und `constants.php` ist noch nicht geladen. 
     337 
     338Wenn Sie beispielsweise erreichen wollen, dass alle Anwendungen ein gemeinsames Verzeichnis für die Layout-Templates verwenden, fügen Sie folgende Zeile in `frontend/config/config.php` ein, um die Einstellung `sf_app_template_dir` zu überschreiben: 
     339 
     340    [php] 
     341    sfConfig::set('sf_app_template_dir', sfConfig::get('sf_root_dir').DIRECTORY_SEPARATOR.'templates'); 
     342 
     343Beachten Sie, dass die `config.php` der Anwendung nicht leer ist; wenn Sie also hier Verzeichnisstrukturen definieren, machen Sie das am Ende der Datei. 
     344 
     345### Das Web-Wurzelverzeichnis des Projekts anpassen 
     346 
     347Alle Pfade in `constants.php` hängen vom Wurzelverzeichnis (engl. "root directory") des Projekts ab, welches als Konstante (`SF_ROOT_DIR`) im Frontcontroller definiert wird. Für gewöhnlich ist das Wurzelverzeichnis eine Ebene oberhalb des `web/`-Verzeichnisses, Sie können jedoch auch eine andere Struktur verwenden. Angenommen, die Struktur Ihres Hauptverzeichnisses besteht aus zwei Unterverzeichnissen, einem öffentlichen und einem privaten, wie in Listing 19-5 gezeigt. Typischerweise ist dies bei Projekten der Fall, die auf einem Shared-Host laufen, also einem Webserver, den man sich mit anderen Kunden teilt. 
     348 
     349Listing 19-5 - Beispiel einer angepassten Verzeichnisstruktur für einen Shared-Host 
     350 
     351    symfony/    # Privater Bereich 
     352      apps/ 
     353      batch/ 
     354      cache/ 
     355      ... 
     356    www/        # Öffentlicher Bereich 
     357      images/ 
     358      css/ 
     359      js/ 
     360      index.php 
     361 
     362In diesem Fall ist das Verzeichnis `symfony/` das Wurzelverzeichnis. Deshalb muss der Frontcontroller `index.php` das `SF_ROOT_DIR` einfach nur wie folgt festlegen, damit die Anwendung funktioniert: 
     363 
     364    [php] 
     365    define('SF_ROOT_DIR', dirname(__FILE__).'/../symfony'); 
     366 
     367Da außerdem das öffentliche Verzeichnis `www/` lautet anstatt dem üblichen `web/`, müssen Sie die beiden Dateipfade in `config.php` entsprechend überschreiben: 
     368 
     369    [php] 
     370    sfConfig::add(array( 
     371      'sf_web_dir'      => SF_ROOT_DIR.DIRECTORY_SEPARATOR.'../www', 
     372      'sf_upload_dir'   => SF_ROOT_DIR.DIRECTORY_SEPARATOR.'../www'.DIRECTORY_SEPARATOR.sfConfig::get('sf_upload_dir_name'), 
     373    )); 
    311374}}}