Konfiguration der Anwendung
Übersicht der Konfigurationsoptionen für Nette Application.
Application
application:
# das Panel "Nette Application" im Tracy BlueScreen anzeigen?
debugger: ... # (bool) aktiv, wenn Tracy verfügbar ist
# in der Produktion werden Exceptions immer vom Error-Presenter behandelt;
# diese Option aktiviert dieses Verhalten zusätzlich im Entwicklungsmodus
catchExceptions: ... # (bool) Standard ist false - also aus im Dev-Modus, in der Produktion immer an
# Name des Error-Presenters
errorPresenter: Error # (string|array) Standard ist 'Nette:Error'
# definiert Aliase für Presenter und Aktionen
aliases: ...
# definiert die Regeln für die Übersetzung des Presenter-Namens in eine Klasse
mapping: ...
# Warnungen für ungültige Links unterdrücken?
# wirkt nur im Entwicklungsmodus
silentLinks: ... # (bool) Standard ist false
Seit nette/application Version 3.2 lässt sich ein Paar von Error-Presentern definieren:
application:
errorPresenter:
4xx: Error4xx # für Nette\Application\BadRequestException
5xx: Error5xx # für übrige Exceptions
Die Aufteilung ist sinnvoll, weil sich beide Situationen grundlegend unterscheiden. Eine BadRequestException
(Codes 4xx) bedeutet, dass mit der Anwendung alles in Ordnung ist und der Besucher lediglich etwas angefordert hat, das es nicht
gibt. Sie können daher einen vollwertigen Presenter verwenden, der eine freundliche Meldung im Layout Ihrer Website anzeigt. Ein
Fehler 5xx bedeutet dagegen, dass in der Anwendung etwas kaputtgegangen ist und Sie nicht wissen, was. Halten Sie den Presenter
für 5xx deshalb so einfach wie möglich, damit bei seinem Rendering nichts weiter fehlschlagen kann – idealerweise sollte er
weder auf die Datenbank noch auf das Layout oder den angemeldeten Benutzer zugreifen.
Die Option silentLinks bestimmt, wie sich Nette im Entwicklungsmodus verhält, wenn die Erzeugung eines Links
fehlschlägt (etwa weil der Presenter nicht existiert usw.). Der Standardwert false bedeutet, dass Nette einen Fehler
E_USER_WARNING auslöst. Die Einstellung true unterdrückt diese Fehlermeldung. In der
Produktionsumgebung wird E_USER_WARNING immer ausgelöst. Dieses Verhalten lässt sich auch über die
Presenter-Variable $invalidLinkMode
beeinflussen.
Aliase vereinfachen das Referenzieren häufig verwendeter Presenter.
Das Mapping definiert die Regeln, nach denen aus dem Presenter-Namen der Klassenname abgeleitet wird.
Automatische Registrierung von Presentern
Nette fügt Presenter automatisch als Services in den DI-Container ein, was ihre Erzeugung deutlich beschleunigt. Wie Nette die Presenter findet, lässt sich konfigurieren:
application:
# Presenter in der Composer-Class-Map suchen?
scanComposer: ... # (bool) Standard ist true
# Maske, der Klassen- und Dateiname entsprechen müssen
scanFilter: ... # (string) Standard ist '*Presenter'
# in welchen Verzeichnissen nach Presentern suchen?
scanDirs: # (string[]|false) Standard ist '%appDir%'
- %vendorDir%/mymodule
Die in scanDirs angegebenen Verzeichnisse überschreiben den Standardwert %appDir% nicht, sondern
ergänzen ihn; scanDirs enthält also beide Pfade %appDir% und %vendorDir%/mymodule. Wollen
wir das Standardverzeichnis weglassen, verwenden wir ein Ausrufezeichen:
application:
scanDirs!:
- %vendorDir%/mymodule
Das Scannen der Verzeichnisse lässt sich mit dem Wert false abschalten. Presenter werden dann nicht mehr als
Services registriert, lassen sich also nicht über den Abschnitt decorator anpassen, und ihre Erzeugung ist
langsamer. Wir empfehlen daher nicht, die automatische Registrierung vollständig zu unterdrücken, da dies die Leistung der
Anwendung senkt.
Latte-Templates
Diese Einstellung beeinflusst global das Verhalten von Latte in Komponenten und Presentern.
latte:
# das Latte-Panel in der Tracy Bar für das Haupttemplate (true) oder für alle Komponenten (all) anzeigen?
debugger: ... # (true|false|'all') aktiv, wenn Tracy verfügbar ist (nur im Debug-Modus)
# Templates mit dem Header declare(strict_types=1) erzeugen
strictTypes: ... # (bool) Standard ist false
# [strikten Parser-Modus |latte:develop#strict mode] aktivieren
strictParsing: ... # (bool) Standard ist false
# beschränkt die Gültigkeit von Variablen auf den Schleifenkörper
scopedLoopVariables: ... # (bool) Standard ist false
# entfernt die durch Verschachtelung in Paar-Tags entstandene Einrückung
dedent: ... # (bool) Standard ist false
# [Prüfung des generierten Codes |latte:develop#Checking Generated Code] aktivieren
phpLinter: ... # (string) Standard ist null
# setzt das Locale
locale: de_DE # (string) Standard ist null
# Klasse des Objekts $this->template
templateClass: App\MyTemplateClass # Standard ist Nette\Bridges\ApplicationLatte\DefaultTemplate
Neue Extensions fügen Sie so hinzu:
latte:
extensions:
- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)
Routing
Grundeinstellungen:
routing:
# das Routing-Panel in der Tracy Bar anzeigen?
debugger: ... # (bool) aktiv, wenn Tracy verfügbar ist (nur im Debug-Modus)
# den Router in den DI-Container serialisieren
cache: ... # (bool) Standard ist false
Das Routing definieren wir üblicherweise in der Klasse RouterFactory. Alternativ lassen sich Routes auch in
der Konfiguration über Paare Maske: Aktion definieren, diese Methode bietet jedoch nicht so viel Flexibilität:
routing:
routes:
'detail/<id>': Admin:Home:default
'<presenter>/<action>': Front:Home:default
Konstanten
Erzeugung von PHP-Konstanten.
constants:
Foobar: 'baz'
Die Konstante Foobar wird nach dem Start der Anwendung erzeugt.
Konstanten sollten nicht als global verfügbare Variablen dienen. Verwenden Sie zur Übergabe von Werten an Objekte Dependency Injection.
PHP
Einstellung von PHP-Direktiven. Eine Übersicht aller Direktiven finden Sie auf php.net.
php:
date.timezone: Europe/Prague
DI-Services
Diese Services werden in den DI-Container eingefügt:
| Name | Typ | Beschreibung |
|---|---|---|
application.application |
Nette\Application\Application | der Anwendungsstarter |
application.linkGenerator |
Nette\Application\LinkGenerator | LinkGenerator |
application.presenterFactory |
Nette\Application\IPresenterFactory | Presenter-Factory |
application.### |
Nette\Application\UI\Presenter | einzelne Presenter |
routing.router |
Nette\Routing\Router | Router |
latte.latteFactory |
Nette\Bridges\ApplicationLatte\LatteFactory | Factory für das Objekt Latte\Engine |
latte.templateFactory |
Nette\Application\UI\TemplateFactory | Factory für $this->template |