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
Les séparer est utile, car les deux situations sont fondamentalement différentes. Une BadRequestException (codes
4xx) signifie que l'application va bien et que le visiteur a simplement demandé quelque chose qui n'existe pas. Vous pouvez donc
y employer un presenter complet, qui affiche un message avenant dans le layout de votre site. À l'inverse, une erreur 5xx
signifie que quelque chose s'est cassé dans l'application, sans qu'on sache quoi. Gardez le presenter 5xx aussi minimal que
possible, pour que rien d'autre ne puisse échouer pendant son rendu : idéalement, il ne devrait toucher ni à la base de
données, ni au layout, ni à l'utilisateur connecté.
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. Les presenters ne sont alors
plus enregistrés comme services : on ne peut donc plus les ajuster via la section decorator et leur création est plus lente. Nous ne recommandons
pas de supprimer complètement l'enregistrement automatique, 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 pour tous les composants (all) ?
debugger: ... # (true|false|'all') activé si Tracy est disponible (mode développement uniquement)
# 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
# limite la portée des variables au corps de la boucle
scopedLoopVariables: ... # (bool) par défaut false
# supprime l'indentation due à l'imbrication dans les balises paires
dedent: ... # (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
Vous pouvez ajouter de nouvelles extensions avec :
latte:
extensions:
- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)
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\IPresenterFactory | factory de presenters |
application.### |
Nette\Application\UI\Presenter | presenters individuels |
routing.router |
Nette\Routing\Router | routeur |
latte.latteFactory |
Nette\Bridges\ApplicationLatte\LatteFactory | factory de l'objet Latte\Engine |
latte.templateFactory |
Nette\Application\UI\TemplateFactory | factory pour $this->template |