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
različica: 4.0