Konfiguracija aplikacij
Pregled konfiguracijskih možnosti za Nette Aplikacije.
Application
application:
# prikazati ploščo "Nette Application" v Tracy BlueScreen?
debugger: ... # (bool) privzeto je true
# ali se bo ob napaki klical error-presenter?
# učinkuje samo v razvojnem načinu
catchExceptions: ... # (bool) privzeto je true
# ime error-presenterja
errorPresenter: Error # (string|array) privzeto je 'Nette:Error'
# definira aliase za presenterje in akcije
aliases: ...
# definira pravila za prevajanje imena presenterja v razred
mapping: ...
# ali napačne povezave ne generirajo opozoril?
# učinkuje samo v razvojnem načinu
silentLinks: ... # (bool) privzeto je false
Od nette/application
različice 3.2 je mogoče definirati par error-presenterjev:
application:
errorPresenter:
4xx: Error4xx # za izjemo Nette\Application\BadRequestException
5xx: Error5xx # za ostale izjeme
Možnost silentLinks
določa, kako se Nette obnaša v razvojnem načinu, ko generiranje povezave ne uspe (na
primer zato, ker presenter ne obstaja itd.). Privzeta vrednost false
pomeni, da Nette sproži napako
E_USER_WARNING
. Nastavitev na true
bo to sporočilo o napaki potlačila. V produkcijskem okolju se
E_USER_WARNING
vedno sproži. Na to obnašanje lahko vplivamo tudi z nastavitvijo spremenljivke presenterja $invalidLinkMode.
Aliasi poenostavljajo povezovanje na pogosto uporabljene presenterje.
Mapiranje definira pravila, po katerih se iz imena presenterja izpelje ime razreda.
Samodejna registracija presenterjev
Nette samodejno dodaja presenterje kot storitve v DI vsebnik, kar bistveno pospeši njihovo ustvarjanje. Kako Nette presenterje išče, je mogoče konfigurirati:
application:
# iskati presenterje v Composer class map?
scanComposer: ... # (bool) privzeto je true
# maska, ki ji morata ustrezati ime razreda in datoteke
scanFilter: ... # (string) privzeto je '*Presenter'
# v katerih mapah iskati presenterje?
scanDirs: # (string[]|false) privzeto je '%appDir%'
- %vendorDir%/mymodule
Mape, navedene v scanDirs
, ne prepišejo privzete vrednosti %appDir%
, ampak jo dopolnjujejo,
scanDirs
bo torej vseboval obe poti %appDir%
in %vendorDir%/mymodule
. Če bi želeli
privzeto mapo izpustiti, uporabimo klicaj,
ki vrednost prepiše:
application:
scanDirs!:
- %vendorDir%/mymodule
Skeniranje map lahko izklopimo z navedbo vrednosti false. Ne priporočamo popolne potlačitve samodejnega dodajanja presenterjev, ker sicer pride do zmanjšanja zmogljivosti aplikacije.
Predloge Latte
S to nastavitvijo lahko globalno vplivamo na obnašanje Latte v komponentah in presenterjih.
latte:
# prikazati ploščo Latte v Tracy Baru za glavno predlogo (true) ali vse komponente (all)?
debugger: ... # (true|false|'all') privzeto je true
# generira predloge z glavo declare(strict_types=1)
strictTypes: ... # (bool) privzeto je false
# vklopi način [strogega razčlenjevalnika |latte:develop#striktní režim]
strictParsing: ... # (bool) privzeto je false
# aktivira [preverjanje generirane kode |latte:develop#Kontrola vygenerovaného kódu]
phpLinter: ... # (string) privzeto je null
# nastavi locale
locale: cs_CZ # (string) privzeto je null
# razred objekta $this->template
templateClass: App\MyTemplateClass # privzeto je Nette\Bridges\ApplicationLatte\DefaultTemplate
Če uporabljate Latte različice 3, lahko dodajate nove razširitve s pomočjo:
latte:
extensions:
- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)
Če uporabljate Latte različice 2, lahko registrirate nove značke bodisi z navedbo imena razreda ali s sklicem na storitev.
Kot privzeta se kliče metoda install()
, vendar to lahko spremenite tako, da navedete ime druge metode:
latte:
# registracija uporabniških Latte značk
macros:
- App\MyLatteMacros::register # statična metoda, ime razreda ali klicna funkcija
- @App\MyLatteMacrosFactory # storitev z metodo install()
- @App\MyLatteMacrosFactory::register # storitev z metodo register()
services:
- App\MyLatteMacrosFactory
Usmerjanje
Osnovne nastavitve:
routing:
# prikazati usmerjevalno ploščo v Tracy Baru?
debugger: ... # (bool) privzeto je true
# serializira usmerjevalnik v DI vsebnik
cache: ... # (bool) privzeto je false
Usmerjanje običajno definiramo v razredu RouterFactory. Alternativno lahko poti definiramo tudi
v konfiguraciji s pomočjo parov maska: akcija
, vendar ta način ne ponuja tako široke variabilnosti
v nastavitvah:
routing:
routes:
'detail/<id>': Admin:Home:default
'<presenter>/<action>': Front:Home:default
Konstante
Ustvarjanje PHP konstant.
constants:
Foobar: 'baz'
Po zagonu aplikacije bo ustvarjena konstanta Foobar
.
Konstante ne bi smele služiti kot nekakšne globalno dostopne spremenljivke. Za posredovanje vrednosti v objekte uporabite dependency injection.
PHP
Nastavitev direktiv PHP. Pregled vseh direktiv najdete na php.net.
php:
date.timezone: Europe/Prague
Storitve DI
Te storitve se dodajajo v DI vsebnik:
Ime | Tip | Opis |
---|---|---|
application.application |
Nette\Application\Application | zaganjalnik celotne aplikacije |
application.linkGenerator |
Nette\Application\LinkGenerator | LinkGenerator |
application.presenterFactory |
Nette\Application\PresenterFactory | tovarna za presenterje |
application.### |
Nette\Application\UI\Presenter | posamezni presenterji |
latte.latteFactory |
Nette\Bridges\ApplicationLatte\LatteFactory | tovarna objekta Latte\Engine |
latte.templateFactory |
Nette\Application\UI\TemplateFactory | tovarna za $this->template |