Konfigurace aplikací
Přehled konfiguračních voleb pro Nette Aplikace.
Application
application:
# zobrazit "Nette Application" panel v Tracy BlueScreen?
debugger: ... # (bool) zapne se, je-li k dispozici Tracy
# v produkci error-presenter zpracovává výjimky vždy;
# tato volba jej zapne i ve vývojářském režimu
catchExceptions: ... # (bool) výchozí je false - tj. ve vývoji vypnuto, v produkci vždy zapnuto
# název error-presenteru
errorPresenter: Error # (string|array) výchozí je 'Nette:Error'
# definuje aliasy pro presentery a akce
aliases: ...
# definuje pravidla pro překlad názvu presenteru na třídu
mapping: ...
# chybné odkazy negenerují varování?
# má efekt pouze ve vývojářském režimu
silentLinks: ... # (bool) výchozí je false
Od nette/application verze 3.2 lze definovat dvojici error-presenterů:
application:
errorPresenter:
4xx: Error4xx # pro výjimku Nette\Application\BadRequestException
5xx: Error5xx # pro ostatní výjimky
Rozdělení se hodí proto, že obě situace jsou zásadně odlišné. Výjimka BadRequestException (kódy 4xx)
znamená, že aplikace je v pořádku a jen návštěvník požádal o něco, co neexistuje. Můžete proto použít
plnohodnotný presenter, který zobrazí přátelskou zprávu v layoutu vašeho webu. Naproti tomu chyba 5xx znamená, že se
v aplikaci něco rozbilo a nevíte co. Presenter pro 5xx proto udržujte co nejjednodušší, aby při jeho vykreslování už
nemohlo nic dalšího selhat – ideálně by neměl sahat na databázi, layout ani na přihlášeného uživatele.
Volba silentLinks určuje, jak se Nette zachová ve vývojářském režimu, když selže generování odkazu
(třeba proto, že neexistuje presenter, atd.). Výchozí hodnota false znamená, že Nette vyhodí
E_USER_WARNING chybu. Nastavením na true dojde k potlačení této chybové hlášky. V produkčním
prostředí se E_USER_WARNING vyvolá vždy. Toto chování můžeme také ovlivnit nastavením proměnné presenteru
$invalidLinkMode.
Aliasy zjednodušují odkazování na často používané presentery.
Mapování definuje pravidla, podle kterých se z názvu presenteru odvodí název třídy.
Automatická registrace presenterů
Nette automaticky přidává presentery jako služby do DI kontejneru, což zásadně zrychlí jejich vytváření. Jak Nette presentery dohledává lze konfigurovat:
application:
# hledat presentery v Composer class map?
scanComposer: ... # (bool) výchozí je true
# maska, které musí vyhovovat název třídy a souboru
scanFilter: ... # (string) výchozí je '*Presenter'
# ve kterých adresářích hledat presentery?
scanDirs: # (string[]|false) výchozí je '%appDir%'
- %vendorDir%/mymodule
Adresáře uvedené v scanDirs nepřepisují výchozí hodnotu %appDir%, ale doplňují ji,
scanDirs tedy bude obsahovat obě cesty %appDir% a %vendorDir%/mymodule. Pokud bychom
chtěli výchozí adresář vynechat, použijeme vykřičník, který hodnotu přepíše:
application:
scanDirs!:
- %vendorDir%/mymodule
Skenování adresářů lze vypnout uvedením hodnoty false. Presentery pak nejsou registrované jako služby,
takže je nelze upravovat v sekci decorator a jejich vytváření je
pomalejší. Úplné potlačení automatické registrace proto nedoporučujeme, protože sníží výkon aplikace.
Šablony Latte
Tímto nastavením lze globálně ovlivnit chování Latte v komponentách a presenterech.
latte:
# zobrazit Latte panel v Tracy Baru pro hlavní šablonu (true) nebo všechny komponenty (all)?
debugger: ... # (true|false|'all') zapne se s Tracy (jen v debug módu)
# generuje šablony s hlavičkou declare(strict_types=1)
strictTypes: ... # (bool) výchozí je false
# zapne režim [striktního parseru |latte:develop#striktní režim]
strictParsing: ... # (bool) výchozí je false
# omezí platnost proměnných na tělo cyklu
scopedLoopVariables: ... # (bool) výchozí je false
# odstraní odsazení vzniklé zanořením v párových značkách
dedent: ... # (bool) výchozí je false
# aktivuje [kontrolu vygenerovaného kódu |latte:develop#Kontrola vygenerovaného kódu]
phpLinter: ... # (string) výchozí je null
# nastaví locale
locale: cs_CZ # (string) výchozí je null
# třída objektu $this->template
templateClass: App\MyTemplateClass # výchozí je Nette\Bridges\ApplicationLatte\DefaultTemplate
Nová rozšíření můžete přidávat pomocí:
latte:
extensions:
- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)
Routování
Základní nastavení:
routing:
# zobrazit routovací panel v Tracy Bar?
debugger: ... # (bool) zapne se s Tracy (jen v debug módu)
# serializuje router do DI kontejneru
cache: ... # (bool) výchozí je false
Routování obvykle definujeme ve třídě RouterFactory. Alternativně lze routy definovat také
v konfiguraci pomocí dvojic maska: akce, ale tento způsob nenabízí tak širokou variabilitu v nastavení:
routing:
routes:
'detail/<id>': Admin:Home:default
'<presenter>/<action>': Front:Home:default
Konstanty
Vytváření PHP konstant.
constants:
Foobar: 'baz'
Po nastartování aplikace bude vytvořena konstanta Foobar.
Konstanty by neměly sloužit jako jakési globálně dostupné proměnné. Pro předávání hodnot do objektů využijte dependency injection.
PHP
Nastavení direktiv PHP. Přehled všech direktiv naleznete na php.net.
php:
date.timezone: Europe/Prague
Služby DI
Tyto služby se přidávají do DI kontejneru:
| Název | Typ | Popis |
|---|---|---|
application.application |
Nette\Application\Application | spouštěč celé aplikace |
application.linkGenerator |
Nette\Application\LinkGenerator | LinkGenerator |
application.presenterFactory |
Nette\Application\IPresenterFactory | továrna na presentery |
application.### |
Nette\Application\UI\Presenter | jednotlivé presentery |
routing.router |
Nette\Routing\Router | směrovač |
latte.latteFactory |
Nette\Bridges\ApplicationLatte\LatteFactory | továrna objektu Latte\Engine |
latte.templateFactory |
Nette\Application\UI\TemplateFactory | továrna pro $this->template |