Configuration des applications

Aperçu des options de configuration pour les applications Nette.

Application

application:
	# afficher le panneau "Nette Application" dans Tracy BlueScreen ?
	debugger: ...           # (bool) par défaut true

	# l'error-presenter sera-t-il appelé en cas d'erreur ?
	# n'a d'effet qu'en mode développement
	catchExceptions: ...    # (bool) par défaut true

	# nom de l'error-presenter
	errorPresenter: Error   # (string|array) par défaut 'Nette:Error'

	# définit les alias pour les presenters et les actions
	aliases: ...

	# définit les règles pour traduire le nom du presenter en classe
	mapping: ...

	# les liens invalides ne génèrent pas d'avertissement ?
	# n'a d'effet qu'en mode développement
	silentLinks: ...        # (bool) par défaut false

Depuis la version 3.2 de nette/application, il est possible de définir une paire d'error-presenters :

application:
	errorPresenter:
		4xx: Error4xx   # pour l'exception Nette\Application\BadRequestException
		5xx: Error5xx   # pour les autres exceptions

L'option silentLinks détermine comment Nette se comporte en mode développement lorsque la génération d'un lien échoue (par exemple, parce que le presenter n'existe pas, etc.). La valeur par défaut false signifie que Nette lèvera une erreur E_USER_WARNING. La définir sur true supprimera ce message d'erreur. En environnement de production, E_USER_WARNING est toujours levé. Ce comportement peut également être influencé en définissant la variable du presenter $invalidLinkMode.

Les alias simplifient la création de liens vers les presenters fréquemment utilisés.

Le mapping définit les règles selon lesquelles le nom de la classe est dérivé du nom du presenter.

Enregistrement automatique des presenters

Nette ajoute automatiquement les presenters en tant que services au conteneur DI, ce qui accélère considérablement leur création. La manière dont Nette trouve les presenters peut être configurée :

application:
	# rechercher les presenters dans la class map de Composer ?
	scanComposer: ...      # (bool) par défaut true

	# masque auquel le nom de la classe et du fichier doit correspondre
	scanFilter: ...        # (string) par défaut '*Presenter'

	# dans quels répertoires rechercher les presenters ?
	scanDirs:              # (string[]|false) par défaut '%appDir%'
		- %vendorDir%/mymodule

Les répertoires spécifiés dans scanDirs ne remplacent pas la valeur par défaut %appDir%, mais la complètent, donc scanDirs contiendra les deux chemins %appDir% et %vendorDir%/mymodule. Si nous voulions omettre le répertoire par défaut, nous utiliserions un point d'exclamation, qui écrase la valeur :

application:
	scanDirs!:
		- %vendorDir%/mymodule

L'analyse des répertoires peut être désactivée en spécifiant la valeur false. Nous ne recommandons pas de supprimer complètement l'ajout automatique des presenters, car cela réduirait les performances de l'application.

Templates Latte

Ce paramètre permet d'influencer globalement le comportement de Latte dans les composants et les presenters.

latte:
	# afficher le panneau Latte dans la barre Tracy pour le template principal (true) ou tous les composants (all) ?
	debugger: ...        # (true|false|'all') par défaut true

	# génère les templates avec l'en-tête declare(strict_types=1)
	strictTypes: ...     # (bool) par défaut false

	# active le mode [parseur strict |latte:develop#strict-mode]
	strictParsing: ...   # (bool) par défaut false

	# active le [contrôle du code généré |latte:develop#checking-generated-code]
	phpLinter: ...       # (string) par défaut null

	# définit la locale
	locale: cs_CZ        # (string) par défaut null

	# classe de l'objet $this->template
	templateClass: App\MyTemplateClass # par défaut Nette\Bridges\ApplicationLatte\DefaultTemplate

Si vous utilisez Latte version 3, vous pouvez ajouter de nouvelles extensions en utilisant :

latte:
	extensions:
		- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)

Si vous utilisez Latte version 2, vous pouvez enregistrer de nouvelles balises soit en spécifiant le nom de la classe, soit par référence à un service. Par défaut, la méthode install() est appelée, mais cela peut être modifié en spécifiant le nom d'une autre méthode :

latte:
	# enregistrement des balises Latte personnalisées
	macros:
		- App\MyLatteMacros::register         # méthode statique, nom de classe ou callable
		- @App\MyLatteMacrosFactory           # service avec la méthode install()
		- @App\MyLatteMacrosFactory::register # service avec la méthode register()

services:
	- App\MyLatteMacrosFactory

Routage

Paramètres de base :

routing:
	# afficher le panneau de routage dans la barre Tracy ?
	debugger: ...   # (bool) par défaut true

	# sérialise le routeur dans le conteneur DI
	cache: ...      # (bool) par défaut false

Le routage est généralement défini dans la classe RouterFactory. Alternativement, les routes peuvent également être définies dans la configuration en utilisant des paires masque: action, mais cette méthode n'offre pas une aussi grande variété de paramètres :

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

Constantes

Création de constantes PHP.

constants:
	Foobar: 'baz'

Après le démarrage de l'application, la constante Foobar sera créée.

Les constantes ne doivent pas servir de variables globales. Pour transmettre des valeurs aux objets, utilisez l'injection de dépendances.

PHP

Configuration des directives PHP. Un aperçu de toutes les directives se trouve sur php.net.

php:
	date.timezone: Europe/Prague

Services DI

Ces services sont ajoutés au conteneur DI :

Nom Type Description
application.application Nette\Application\Application lanceur de toute l'application
application.linkGenerator Nette\Application\LinkGenerator LinkGenerator
application.presenterFactory Nette\Application\PresenterFactory factory de presenters
application.### Nette\Application\UI\Presenter presenters individuels
latte.latteFactory Nette\Bridges\ApplicationLatte\LatteFactory factory de l'objet Latte\Engine
latte.templateFactory Nette\Application\UI\TemplateFactory factory pour $this->template
version: 4.0