Alkalmazások konfigurálása

A Nette alkalmazások konfigurációs lehetőségeinek áttekintése.

Application

application:
	# megjelenjen a "Nette Application" panel a Tracy BlueScreen-en?
	debugger: ...           # (bool) alapértelmezett: true

	# hiba esetén meghívódjon az error-presenter?
	# csak fejlesztői módban van hatása
	catchExceptions: ...    # (bool) alapértelmezett: true

	# az error-presenter neve
	errorPresenter: Error   # (string|array) alapértelmezett: 'Nette:Error'

	# aliasokat definiál presenterekhez és akciókhoz
	aliases: ...

	# szabályokat definiál a presenter nevének osztályra való fordításához
	mapping: ...

	# a hibás linkek nem generálnak figyelmeztetést?
	# csak fejlesztői módban van hatása
	silentLinks: ...        # (bool) alapértelmezett: false

A nette/application 3.2-es verziójától kezdve definiálható egy error-presenter pár:

application:
	errorPresenter:
		4xx: Error4xx   # Nette\Application\BadRequestException kivételhez
		5xx: Error5xx   # egyéb kivételekhez

A silentLinks opció meghatározza, hogyan viselkedik a Nette fejlesztői módban, ha a link generálása sikertelen (például mert nem létezik a presenter stb.). Az alapértelmezett false érték azt jelenti, hogy a Nette E_USER_WARNING hibát dob. true-ra állítva ez a hibaüzenet elnyomásra kerül. Éles környezetben az E_USER_WARNING mindig kiváltódik. Ezt a viselkedést a presenter $invalidLinkMode változójának beállításával is befolyásolhatjuk.

Az Aliasok egyszerűsítik a hivatkozást a gyakran használt presenterekre.

Mapping definiálja a szabályokat, amelyek alapján a presenter nevéből levezetődik az osztály neve.

Presenterek automatikus regisztrációja

A Nette automatikusan hozzáadja a presentereket szolgáltatásként a DI konténerhez, ami jelentősen felgyorsítja azok létrehozását. A Nette presenterek felkutatásának módja konfigurálható:

application:
	# keresse a presentereket a Composer class map-ben?
	scanComposer: ...      # (bool) alapértelmezett: true

	# maszk, amelynek meg kell felelnie az osztály és a fájl nevének
	scanFilter: ...        # (string) alapértelmezett: '*Presenter'

	# mely könyvtárakban keresse a presentereket?
	scanDirs:              # (string[]|false) alapértelmezett: '%appDir%'
		- %vendorDir%/mymodule

A scanDirs-ben megadott könyvtárak nem írják felül az alapértelmezett %appDir% értéket, hanem kiegészítik azt, így a scanDirs mindkét utat tartalmazni fogja: %appDir% és %vendorDir%/mymodule. Ha az alapértelmezett könyvtárat ki szeretnénk hagyni, használjuk a felkiáltójelet, amely felülírja az értéket:

application:
	scanDirs!:
		- %vendorDir%/mymodule

A könyvtárak szkennelése kikapcsolható a false érték megadásával. Nem javasoljuk a presenterek automatikus hozzáadásának teljes elnyomását, mert ez csökkenti az alkalmazás teljesítményét.

Latte sablonok

Ezzel a beállítással globálisan befolyásolható a Latte viselkedése a komponensekben és presenterekben.

latte:
	# megjelenjen a Latte panel a Tracy Bar-ban a fő sablonhoz (true) vagy az összes komponenshez (all)?
	debugger: ...        # (true|false|'all') alapértelmezett: true

	# generál sablonokat declare(strict_types=1) fejléccel
	strictTypes: ...     # (bool) alapértelmezett: false

	# bekapcsolja a [szigorú parser |latte:develop#striktní režim] módot
	strictParsing: ...   # (bool) alapértelmezett: false

	# aktiválja a [generált kód ellenőrzését |latte:develop#Kontrola vygenerovaného kódu]
	phpLinter: ...       # (string) alapértelmezett: null

	# beállítja a locale-t
	locale: cs_CZ        # (string) alapértelmezett: null

	# a $this->template objektum osztálya
	templateClass: App\MyTemplateClass # alapértelmezett: Nette\Bridges\ApplicationLatte\DefaultTemplate

Ha a Latte 3-as verzióját használja, új bővítményeket adhat hozzá a következőkkel:

latte:
	extensions:
		- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)

Ha a Latte 2-es verzióját használja, új tag-eket regisztrálhat akár az osztálynév megadásával, akár egy szolgáltatásra való hivatkozással. Alapértelmezés szerint az install() metódus hívódik meg, de ezt meg lehet változtatni egy másik metódus nevének megadásával:

latte:
	# egyéni Latte tag-ek regisztrálása
	macros:
		- App\MyLatteMacros::register         # statikus metódus, classname vagy callable
		- @App\MyLatteMacrosFactory           # szolgáltatás install() metódussal
		- @App\MyLatteMacrosFactory::register # szolgáltatás register() metódussal

services:
	- App\MyLatteMacrosFactory

Routing

Alapbeállítások:

routing:
	# megjelenjen a routing panel a Tracy Bar-ban?
	debugger: ...   # (bool) alapértelmezett: true

	# szerializálja a routert a DI konténerbe
	cache: ...      # (bool) alapértelmezett: false

A routingot általában a RouterFactory osztályban definiáljuk. Alternatívaként a route-okat a konfigurációban is definiálhatjuk maszk: akció párokkal, de ez a módszer nem kínál olyan széleskörű beállítási lehetőségeket:

routing:
	routes:
		'detail/<id>': Admin:Home:default
		'<presenter>/<action>': Front:Home:default

Konstansok

PHP konstansok létrehozása.

constants:
	Foobar: 'baz'

Az alkalmazás indítása után létrejön a Foobar konstans.

A konstansok nem szolgálhatnak valamiféle globálisan elérhető változóként. Értékek objektumokba való átadásához használja a dependency injectiont.

PHP

PHP direktívák beállítása. Az összes direktíva áttekintése megtalálható a php.net oldalon.

php:
	date.timezone: Europe/Prague

DI szolgáltatások

Ezek a szolgáltatások kerülnek hozzáadásra a DI konténerhez:

Név Típus Leírás
application.application Nette\Application\Application az egész alkalmazás indítója
application.linkGenerator Nette\Application\LinkGenerator LinkGenerator
application.presenterFactory Nette\Application\PresenterFactory presenter factory
application.### Nette\Application\UI\Presenter egyes presenterek
latte.latteFactory Nette\Bridges\ApplicationLatte\LatteFactory Latte\Engine objektum factory-ja
latte.templateFactory Nette\Application\UI\TemplateFactory factory a $this->template számára
verzió: 4.0