Konfigurace aplikací
Přehled konfiguračních voleb pro Nette Aplikace.
Application
application:
# zobrazit "Nette Application" panel v Tracy BlueScreen?
debugger: ... # (bool) výchozí je true
# bude se při chybě volat error-presenter?
# má efekt pouze ve vývojářském režimu
catchExceptions: ... # (true|false|4xx) výchozí je 4xx
# 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 má catchExceptions
výchozí hodnotou 4xx
, což
znamená, že se error-presenter použije pouze u výjimek Nette\Application\BadRequestException
reprezentujících
HTTP chyby 4xx. A dále lze definovat dvojici error-presenterů:
application:
errorPresenter:
4xx: Error4xx # pro výjimku Nette\Application\BadRequestException
5xx: Error5xx # pro ostatní výjimky
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. Nedoporučujeme úplně potlačit automatické přidávání presenterů, protože jinak dojde ke snížení výkonu 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') výchozí je true
# přepne Latte do XHTML režimu (deprecated)
xhtml: ... # (bool) výchozí je false
# generuje šablony s hlavičkou declare(strict_types=1)
strictTypes: ... # (bool) výchozí je false
# 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
# resp. Nette\Bridges\ApplicationLatte\Template v Nette Application v3.0
Pokud používáte Latte verze 3, můžete přidávat nové rozšíření pomocí:
latte:
extensions:
- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)
Pokud používáte Latte verze 2, můžete registrovat nové tagy (makra) buď uvedením jména třídy, nebo referencí na
službu. Jako výchozí je zavolána metoda install()
, ale to lze změnit tím, že uvedeme jméno jiné metody:
latte:
# registrace uživatelských Latte značek
macros:
- App\MyLatteMacros::register # statická metoda, classname nebo callable
- @App\MyLatteMacrosFactory # služba s metodou install()
- @App\MyLatteMacrosFactory::register # služba s metodou register()
services:
- App\MyLatteMacrosFactory
Routování
Základní nastavení:
routing:
# zobrazit routovací panel v Tracy Bar?
debugger: ... # (bool) výchozí je true
# 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\PresenterFactory | továrna na presentery |
application.### |
Nette\Application\UI\Presenter | jednotlivé presentery |
latte.latteFactory |
Nette\Bridges\ApplicationLatte\LatteFactory | továrna objektu Latte\Engine |
latte.templateFactory |
Nette\Application\UI\TemplateFactory | továrna pro $this->template |