Konfiguration von Anwendungen
Übersicht über die Konfigurationsoptionen für Nette-Anwendungen.
Application
application:
# Das "Nette Application"-Panel im Tracy BlueScreen anzeigen?
debugger: ... # (bool) Standard ist true
# Soll bei einem Fehler der Error-Presenter aufgerufen werden?
# wirkt sich nur im Entwicklungsmodus aus
catchExceptions: ... # (bool) Standard ist true
# Name des Error-Presenters
errorPresenter: Error # (string|array) Standard ist 'Nette:Error'
# definiert Aliase für Presenter und Aktionen
aliases: ...
# definiert Regeln für die Übersetzung des Presenter-Namens in eine Klasse
mapping: ...
# Erzeugen fehlerhafte Links keine Warnungen?
# wirkt sich nur im Entwicklungsmodus aus
silentLinks: ... # (bool) Standard ist false
Seit nette/application
Version 3.2 kann ein Paar von Error-Presentern definiert werden:
application:
errorPresenter:
4xx: Error4xx # für die Ausnahme Nette\Application\BadRequestException
5xx: Error5xx # für andere Ausnahmen
Die Option silentLinks
bestimmt, wie sich Nette im Entwicklungsmodus verhält, wenn die Linkgenerierung
fehlschlägt (z. B. weil der Presenter nicht existiert usw.). Der Standardwert false
bedeutet, dass Nette einen
E_USER_WARNING
-Fehler auslöst. Durch Setzen auf true
wird diese Fehlermeldung unterdrückt. In der
Produktionsumgebung wird E_USER_WARNING
immer ausgelöst. Dieses Verhalten kann auch durch Setzen der
Presenter-Variable $invalidLinkMode
beeinflusst werden.
Aliase vereinfachen das Verlinken zu häufig verwendeten Presentern.
Mapping definiert Regeln, nach denen der Klassenname vom Presenter-Namen abgeleitet wird.
Automatische Registrierung von Presentern
Nette fügt Presenter automatisch als Dienste zum DI-Container hinzu, was deren Erstellung erheblich beschleunigt. Wie Nette Presenter findet, kann konfiguriert werden:
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 sollen Presenter gesucht werden?
scanDirs: # (string[]|false) Standard ist '%appDir%'
- %vendorDir%/mymodule
Die in scanDirs
angegebenen Verzeichnisse überschreiben nicht den Standardwert %appDir%
, sondern
ergänzen ihn, sodass scanDirs
beide Pfade %appDir%
und %vendorDir%/mymodule
enthält. Wenn
wir das Standardverzeichnis auslassen möchten, verwenden wir ein Ausrufezeichen, das den Wert überschreibt:
application:
scanDirs!:
- %vendorDir%/mymodule
Das Scannen von Verzeichnissen kann durch Angabe des Wertes false deaktiviert werden. Wir empfehlen nicht, das automatische Hinzufügen von Presentern vollständig zu unterdrücken, da dies die Leistung der Anwendung beeinträchtigen würde.
Latte-Templates
Mit dieser Einstellung kann das Verhalten von Latte in Komponenten und Presentern global beeinflusst werden.
latte:
# Latte-Panel in der Tracy Bar für das Haupttemplate (true) oder alle Komponenten (all) anzeigen?
debugger: ... # (true|false|'all') Standard ist true
# generiert Templates mit dem Header declare(strict_types=1)
strictTypes: ... # (bool) Standard ist false
# schaltet den [strengen Parser-Modus |latte:develop#strict-mode] ein
strictParsing: ... # (bool) Standard ist false
# aktiviert die [Überprüfung des generierten Codes |latte:develop#checking-generated-code]
phpLinter: ... # (string) Standard ist null
# setzt die Locale
locale: cs_CZ # (string) Standard ist null
# Klasse des $this->template-Objekts
templateClass: App\MyTemplateClass # Standard ist Nette\Bridges\ApplicationLatte\DefaultTemplate
Wenn Sie Latte Version 3 verwenden, können Sie neue Erweiterungen hinzufügen mit:
latte:
extensions:
- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)
Wenn Sie Latte Version 2 verwenden, können Sie neue Tags (Makros) registrieren, indem Sie entweder den Klassennamen oder eine
Referenz auf einen Dienst angeben. Standardmäßig wird die Methode install()
aufgerufen, dies kann jedoch geändert
werden, indem ein anderer Methodenname angegeben wird:
latte:
# Registrierung benutzerdefinierter Latte-Tags
macros:
- App\MyLatteMacros::register # statische Methode, Klassenname oder Callable
- @App\MyLatteMacrosFactory # Dienst mit install()-Methode
- @App\MyLatteMacrosFactory::register # Dienst mit register()-Methode
services:
- App\MyLatteMacrosFactory
Routing
Grundeinstellungen:
routing:
# Routing-Panel in der Tracy Bar anzeigen?
debugger: ... # (bool) Standard ist true
# serialisiert den Router in den DI-Container
cache: ... # (bool) Standard ist false
Das Routing wird normalerweise in der Klasse RouterFactory definiert. Alternativ können Routen
auch in der Konfiguration über Paare Maske: Aktion
definiert werden, aber diese Methode bietet nicht so viel
Flexibilität bei den Einstellungen:
routing:
routes:
'detail/<id>': Admin:Home:default
'<presenter>/<action>': Front:Home:default
Konstanten
Erstellen von PHP-Konstanten.
constants:
Foobar: 'baz'
Nach dem Start der Anwendung wird die Konstante Foobar
erstellt.
Konstanten sollten nicht als global verfügbare Variablen dienen. Verwenden Sie Dependency Injection, um Werte an Objekte zu übergeben.
PHP
Einstellen von PHP-Direktiven. Eine Übersicht über alle Direktiven finden Sie auf php.net.
php:
date.timezone: Europe/Prague
DI-Dienste
Diese Dienste werden dem DI-Container hinzugefügt:
Name | Typ | Beschreibung |
---|---|---|
application.application |
Nette\Application\Application | Starter der gesamten Anwendung |
application.linkGenerator |
Nette\Application\LinkGenerator | LinkGenerator |
application.presenterFactory |
Nette\Application\PresenterFactory | Factory für Presenter |
application.### |
Nette\Application\UI\Presenter | einzelne Presenter |
latte.latteFactory |
Nette\Bridges\ApplicationLatte\LatteFactory | Factory für das Latte\Engine -Objekt |
latte.templateFactory |
Nette\Application\UI\TemplateFactory | Factory für $this->template |