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
Version: 4.0