Nette Documentation Preview

syntax
Anwendung konfigurieren
***********************

.[perex]
Überblick über die Konfigurationsoptionen für die Nette-Anwendung.


Anwendung .[#toc-application]
=============================

```neon
Anwendung:
	# zeigt das Feld "Nette Anwendung" in Tracy BlueScreen?
	debugger: ...           # (bool) standardmäßig true

	# wird der error-presenter im Fehlerfall aufgerufen?
	catchExceptions: ...    # (bool) steht im Produktionsmodus standardmäßig auf true

	# Name des Fehlermelders
	errorPresenter: Error   # (string) Standardwert ist 'Nette:Error'

	# definiert die Regeln für die Auflösung des Presenter-Namens in eine Klasse
	mapping: ...

	# werden bei schlechten Links Warnungen erzeugt?
	# hat nur im Entwicklermodus Auswirkungen
	silentLinks: ...        # (bool) ist standardmäßig auf false eingestellt
```

Da Fehlerpräsenter im Entwicklungsmodus standardmäßig nicht aufgerufen werden und die Fehler von Tracy angezeigt werden, hilft das Ändern des Wertes `catchExceptions` in `true` dabei, zu überprüfen, ob die Fehlerpräsenter während der Entwicklung korrekt funktionieren.

Die Option `silentLinks` legt fest, wie sich Nette im Entwicklermodus verhält, wenn die Link-Generierung fehlschlägt (z. B. weil kein Presenter vorhanden ist usw.). Der Standardwert `false` bedeutet, dass Nette `E_USER_WARNING` auslöst. Die Einstellung `true` unterdrückt diese Fehlermeldung. In einer Produktionsumgebung wird immer `E_USER_WARNING` aufgerufen. Wir können dieses Verhalten auch beeinflussen, indem wir die Presenter-Variable [$invalidLinkMode |creating-links#Invalid Links] setzen.

Das [Mapping definiert die Regeln |modules#mapping], nach denen der Klassenname aus dem Presenter-Namen abgeleitet wird.


Automatische Registrierung von Präsentatoren .[#toc-automatic-registration-of-presenters]
-----------------------------------------------------------------------------------------

Nette fügt Presenter automatisch als Dienste zum DI-Container hinzu, was ihre Erstellung erheblich beschleunigt. Wie Nette Presenter findet, kann konfiguriert werden:

```neon
Anwendung:
	# um nach Präsentatoren in der Composer-Klassenkarte zu suchen?
	scanComposer: ...      # (bool) standardmäßig auf true

	# eine Maske, die mit der Klasse und dem Dateinamen übereinstimmen muss
	scanFilter: ...        # (string) Standardwert ist '*Presenter'.

	# in welchen Verzeichnissen soll nach Präsentatoren gesucht werden?
	scanDirs:              # (string[]|false) Standardwert ist '%appDir%'
		- %vendorDir%/mymodule
```

Die in `scanDirs` aufgeführten Verzeichnisse überschreiben nicht den Standardwert `%appDir%`, sondern ergänzen ihn, so dass `scanDirs` die beiden Pfade `%appDir%` und `%vendorDir%/mymodule` enthält. Wenn wir das Standardverzeichnis überschreiben wollen, verwenden wir ein [Ausrufezeichen |dependency-injection:configuration#Merging]:

```neon
application:
	scanDirs!:
		- %vendorDir%/mymodule
```

Das Scannen von Verzeichnissen kann durch die Einstellung false ausgeschaltet werden. Es wird nicht empfohlen, das automatische Hinzufügen von Präsentatoren vollständig zu unterdrücken, da sonst die Leistung der Anwendung beeinträchtigt wird.


Latte .[#toc-latte]
===================

Diese Einstellung wirkt sich global auf das Verhalten von Latte in Komponenten und Presentern aus.

```neon
Latte:
	# zeigt das Latte-Panel in der Tracy Bar für die Hauptvorlage (true) oder für alle Komponenten (all)?
	debugger: ...        # (true|false|'all') ist standardmäßig true

	# erzeugt Vorlagen mit declare(strict_types=1)
	strictTypes: ...     # (bool) ist standardmäßig false

	# aktiviert den [strengen Parser-Modus |latte:develop#strict mode]
	strictParsing: ...   # (bool) Standard ist false

	# aktiviert die [Überprüfung von generiertem Code |latte:develop#Checking Generated Code]
	phpLinter: ...       # (string) Voreinstellung ist null

	# Klasse von $this->template
	templateClass: App\MyTemplateClass # Standardwert ist Nette\Bridges\ApplicationLatte\DefaultTemplate
```

Wenn Sie Latte Version 3 verwenden, können Sie neue [Erweiterungen |latte:creating-extension] mit hinzufügen:

```neon
latte:
	extensions:
		- Latte\Essential\TranslatorExtension
```

/--comment











\--


Routing .[#toc-routing]
=======================

Grundeinstellungen:

```neon
routing:
	# zeigt Routing-Panel in Tracy Bar?
	debugger: ...   # (bool) standardmäßig true

	# Router in DI-Container serialisieren?
	cache: ...      # (bool) Standardwert ist false
```

Router werden normalerweise in der Klasse [RouterFactory |routing#Route Collection] definiert. Alternativ können Router auch in der Konfiguration mit `mask: action` Paaren definiert werden, aber diese Methode bietet keine so große Variationsbreite an Einstellungen:

```neon
routing:
	routes:
		'detail/<id>': Admin:Home:default
		'<presenter>/<action>': Front:Home:default
```


Konstanten .[#toc-constants]
============================

Erstellen von PHP-Konstanten.

```neon
constants:
	Foobar: 'baz'
```

Die Konstante `Foobar` wird nach dem Start der Anwendung erstellt.

.[note]
Konstanten sollten nicht als global verfügbare Variablen dienen. Um Werte an Objekte zu übergeben, verwenden Sie [Dependency Injection |dependency-injection:passing-dependencies].


PHP
===

Sie können PHP-Direktiven setzen. Eine Übersicht über alle Direktiven finden Sie auf [php.net |https://www.php.net/manual/en/ini.list.php].

```neon
php:
	date.timezone: Europe/Prague
```


DI-Dienste .[#toc-di-services]
==============================

Diese Dienste werden dem DI-Container hinzugefügt:

| Name | Typ | Beschreibung
|----------------------------------------------------------
| `application.application` | [api:Nette\Application\Application] | [Vollständiger Anwendungsstarter |how-it-works#Nette Application]
| `application.linkGenerator` | [api:Nette\Application\LinkGenerator] | [LinkGenerator |creating-links#LinkGenerator]
| `application.presenterFactory` | [api:Nette\Application\PresenterFactory] | Presenter-Fabrik
| `application.###` | [api:Nette\Application\UI\Presenter] | einzelne Referenten
| `latte.latteFactory` | [api:Nette\Bridges\ApplicationLatte\LatteFactory] | Fabrik für `Latte\Engine`
| `latte.templateFactory` | [api:Nette\Application\UI\TemplateFactory] | Fabrik für [`$this->template` |templates]

Anwendung konfigurieren

Überblick über die Konfigurationsoptionen für die Nette-Anwendung.

Anwendung

Anwendung:
	# zeigt das Feld "Nette Anwendung" in Tracy BlueScreen?
	debugger: ...           # (bool) standardmäßig true

	# wird der error-presenter im Fehlerfall aufgerufen?
	catchExceptions: ...    # (bool) steht im Produktionsmodus standardmäßig auf true

	# Name des Fehlermelders
	errorPresenter: Error   # (string) Standardwert ist 'Nette:Error'

	# definiert die Regeln für die Auflösung des Presenter-Namens in eine Klasse
	mapping: ...

	# werden bei schlechten Links Warnungen erzeugt?
	# hat nur im Entwicklermodus Auswirkungen
	silentLinks: ...        # (bool) ist standardmäßig auf false eingestellt

Da Fehlerpräsenter im Entwicklungsmodus standardmäßig nicht aufgerufen werden und die Fehler von Tracy angezeigt werden, hilft das Ändern des Wertes catchExceptions in true dabei, zu überprüfen, ob die Fehlerpräsenter während der Entwicklung korrekt funktionieren.

Die Option silentLinks legt fest, wie sich Nette im Entwicklermodus verhält, wenn die Link-Generierung fehlschlägt (z. B. weil kein Presenter vorhanden ist usw.). Der Standardwert false bedeutet, dass Nette E_USER_WARNING auslöst. Die Einstellung true unterdrückt diese Fehlermeldung. In einer Produktionsumgebung wird immer E_USER_WARNING aufgerufen. Wir können dieses Verhalten auch beeinflussen, indem wir die Presenter-Variable $invalidLinkMode setzen.

Das Mapping definiert die Regeln, nach denen der Klassenname aus dem Presenter-Namen abgeleitet wird.

Automatische Registrierung von Präsentatoren

Nette fügt Presenter automatisch als Dienste zum DI-Container hinzu, was ihre Erstellung erheblich beschleunigt. Wie Nette Presenter findet, kann konfiguriert werden:

Anwendung:
	# um nach Präsentatoren in der Composer-Klassenkarte zu suchen?
	scanComposer: ...      # (bool) standardmäßig auf true

	# eine Maske, die mit der Klasse und dem Dateinamen übereinstimmen muss
	scanFilter: ...        # (string) Standardwert ist '*Presenter'.

	# in welchen Verzeichnissen soll nach Präsentatoren gesucht werden?
	scanDirs:              # (string[]|false) Standardwert ist '%appDir%'
		- %vendorDir%/mymodule

Die in scanDirs aufgeführten Verzeichnisse überschreiben nicht den Standardwert %appDir%, sondern ergänzen ihn, so dass scanDirs die beiden Pfade %appDir% und %vendorDir%/mymodule enthält. Wenn wir das Standardverzeichnis überschreiben wollen, verwenden wir ein Ausrufezeichen:

application:
	scanDirs!:
		- %vendorDir%/mymodule

Das Scannen von Verzeichnissen kann durch die Einstellung false ausgeschaltet werden. Es wird nicht empfohlen, das automatische Hinzufügen von Präsentatoren vollständig zu unterdrücken, da sonst die Leistung der Anwendung beeinträchtigt wird.

Latte

Diese Einstellung wirkt sich global auf das Verhalten von Latte in Komponenten und Presentern aus.

Latte:
	# zeigt das Latte-Panel in der Tracy Bar für die Hauptvorlage (true) oder für alle Komponenten (all)?
	debugger: ...        # (true|false|'all') ist standardmäßig true

	# erzeugt Vorlagen mit declare(strict_types=1)
	strictTypes: ...     # (bool) ist standardmäßig false

	# aktiviert den [strengen Parser-Modus |latte:develop#strict mode]
	strictParsing: ...   # (bool) Standard ist false

	# aktiviert die [Überprüfung von generiertem Code |latte:develop#Checking Generated Code]
	phpLinter: ...       # (string) Voreinstellung ist null

	# Klasse von $this->template
	templateClass: App\MyTemplateClass # Standardwert ist Nette\Bridges\ApplicationLatte\DefaultTemplate

Wenn Sie Latte Version 3 verwenden, können Sie neue Erweiterungen mit hinzufügen:

latte:
	extensions:
		- Latte\Essential\TranslatorExtension

Routing

Grundeinstellungen:

routing:
	# zeigt Routing-Panel in Tracy Bar?
	debugger: ...   # (bool) standardmäßig true

	# Router in DI-Container serialisieren?
	cache: ...      # (bool) Standardwert ist false

Router werden normalerweise in der Klasse RouterFactory definiert. Alternativ können Router auch in der Konfiguration mit mask: action Paaren definiert werden, aber diese Methode bietet keine so große Variationsbreite an Einstellungen:

routing:
	routes:
		'detail/<id>': Admin:Home:default
		'<presenter>/<action>': Front:Home:default

Konstanten

Erstellen von PHP-Konstanten.

constants:
	Foobar: 'baz'

Die Konstante Foobar wird nach dem Start der Anwendung erstellt.

Konstanten sollten nicht als global verfügbare Variablen dienen. Um Werte an Objekte zu übergeben, verwenden Sie Dependency Injection.

PHP

Sie können PHP-Direktiven setzen. 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 Vollständiger Anwendungsstarter
application.linkGenerator Nette\Application\LinkGenerator LinkGenerator
application.presenterFactory Nette\Application\PresenterFactory Presenter-Fabrik
application.### Nette\Application\UI\Presenter einzelne Referenten
latte.latteFactory Nette\Bridges\ApplicationLatte\LatteFactory Fabrik für Latte\Engine
latte.templateFactory Nette\Application\UI\TemplateFactory Fabrik für $this->template