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?
catchExceptions: ... # (bool) výchozí je true v produkčním režimu
# název error-presenteru
errorPresenter: Error # (string) výchozí je 'Nette:Error'
# chybné odkazy negenerují varování?
# má efekt pouze ve vývojářském režimu
silentLinks: ... # (bool) výchozí je false
Protože ve vývojovém režimu se error-presentery standardně nevolají a chybu zobrazí až Tracy, změnou hodnoty
catchExceptions
na true
můžeme při vývoji ověřit jejich správnou funkčnost.
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.
Mapování
Definuje pravidla, podle kterých se z názvu presenteru (třeba Homepage
) odvodí název třídy (třeba
App\Presenters\HomepagePresenter
). Právě takového mapování lze docílit následující konfigurací:
application:
mapping:
*: App\Presenters\*Presenter
Název presenteru se nahradí za hvezdičku a výsledkem je název třídy. Snadné!
Pokud presentery členíme do modulů, můžeme pro každý modul mít vlastní mapování:
application:
mapping:
Front: App\Modules\Front\*Presenter
Admin: App\Modules\Admin\*Presenter
Api: App\Api\*Presenter
Nyní se presenter Front:Homepage
mapuje na třídu App\Modules\Front\HomepagePresenter
a presenter
Admin:Dashboard
na třídu App\Modules\Admin\DashboardPresenter
.
Šikovnější bude vytvořit obecné (hvězdičkové) pravidlo, které první dvě nahradí a přibude v něm hvezdička navíc právě pro modul:
application:
mapping:
*: App\Modules\*\*Presenter
Api: App\Api\*Presenter
Opět presenter Front:Homepage
namapuje na třídu App\Modules\Front\HomepagePresenter
.
Ale co když používáme vícenásobně zanořené moduly a máme třeba presenter Admin:User:Edit
? V takovém
případě se segment s hvězdičkou představující modul pro každou úroveň jednoduše zopakuje a výsledkem bude třída
App\Modules\Admin\User\EditPresenter
.
Alternativním zápisem je místo řetězce použít pole skládající se ze tří segmentů:
application:
mapping:
*: [App\Modules, *, *Presenter]
Tento zápis je ekvivalentní s původním App\Modules\*\*Presenter
.
Výchozí hodnotou je *: *Module\*Presenter
.
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
# třída objektu $this->template
templateClass: App\MyTemplateClass # výchozí je Nette\Bridges\ApplicationLatte\DefaultTemplate
Dále lze registrovat nové tagy (makra) a to 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, omezenější alternativou je definice v konfiguraci pomocí dvojic
maska: akce
:
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
.
PHP
Nastavení direktiv PHP. Přehled všech direktiv naleznete na php.net.
php:
date.timezone: Europe/Prague
- Dokumentace
- Application
- Konfigurace aplikací