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
Version: 4.x