Konfiguracja aplikacji

Przegląd opcji konfiguracyjnych dla aplikacji Nette.

Application

application:
	# wyświetlić panel "Nette Application" w Tracy BlueScreen?
	debugger: ...           # (bool) domyślnie true

	# czy przy błędzie będzie wywoływany error-presenter?
	# ma efekt tylko w trybie deweloperskim
	catchExceptions: ...    # (bool) domyślnie true

	# nazwa error-presentera
	errorPresenter: Error   # (string|array) domyślnie 'Nette:Error'

	# definiuje aliasy dla presenterów i akcji
	aliases: ...

	# definiuje reguły tłumaczenia nazwy presentera na klasę
	mapping: ...

	# nieprawidłowe linki nie generują ostrzeżeń?
	# ma efekt tylko w trybie deweloperskim
	silentLinks: ...        # (bool) domyślnie false

Od wersji nette/application 3.2 można zdefiniować parę error-presenterów:

application:
	errorPresenter:
		4xx: Error4xx   # dla wyjątku Nette\Application\BadRequestException
		5xx: Error5xx   # dla pozostałych wyjątków

Opcja silentLinks określa, jak Nette zachowa się w trybie deweloperskim, gdy generowanie linku nie powiodło się (np. dlatego, że presenter nie istnieje itp.). Domyślna wartość false oznacza, że Nette zgłosi błąd E_USER_WARNING. Ustawienie na true spowoduje stłumienie tego komunikatu błędu. W środowisku produkcyjnym E_USER_WARNING jest zawsze zgłaszany. To zachowanie możemy również kontrolować, ustawiając zmienną presentera $invalidLinkMode.

Aliasy upraszczają linkowanie do często używanych presenterów.

Mapowanie definiuje reguły, według których z nazwy presentera wyprowadzana jest nazwa klasy.

Automatyczna rejestracja presenterów

Nette automatycznie dodaje presentery jako usługi do kontenera DI, co znacząco przyspiesza ich tworzenie. Sposób, w jaki Nette wyszukuje presentery, można skonfigurować:

application:
	# szukać presenterów w Composer class map?
	scanComposer: ...      # (bool) domyślnie true

	# maska, której musi odpowiadać nazwa klasy i pliku
	scanFilter: ...        # (string) domyślnie '*Presenter'

	# w których katalogach szukać presenterów?
	scanDirs:              # (string[]|false) domyślnie '%appDir%'
		- %vendorDir%/mymodule

Katalogi podane w scanDirs nie nadpisują wartości domyślnej %appDir%, ale uzupełniają ją, więc scanDirs będzie zawierać obie ścieżki %appDir% i %vendorDir%/mymodule. Jeśli chcielibyśmy pominąć katalog domyślny, użyjemy wykrzyknika, który nadpisze wartość:

application:
	scanDirs!:
		- %vendorDir%/mymodule

Skanowanie katalogów można wyłączyć, podając wartość false. Nie zalecamy całkowitego wyłączania automatycznego dodawania presenterów, ponieważ w przeciwnym razie dojdzie do obniżenia wydajności aplikacji.

Szablony Latte

Tym ustawieniem można globalnie wpłynąć na zachowanie Latte w komponentach i presenterach.

latte:
	# wyświetlić panel Latte w Tracy Bar dla głównego szablonu (true) lub wszystkich komponentów (all)?
	debugger: ...        # (true|false|'all') domyślnie true

	# generuje szablony z nagłówkiem declare(strict_types=1)
	strictTypes: ...     # (bool) domyślnie false

	# włącza tryb [ścisłego parsera |latte:develop#striktní režim]
	strictParsing: ...   # (bool) domyślnie false

	# aktywuje [kontrolę wygenerowanego kodu |latte:develop#Kontrola vygenerovaného kódu]
	phpLinter: ...       # (string) domyślnie null

	# ustawia locale
	locale: cs_CZ        # (string) domyślnie null

	# klasa obiektu $this->template
	templateClass: App\MyTemplateClass # domyślnie Nette\Bridges\ApplicationLatte\DefaultTemplate

Jeśli używasz Latte w wersji 3, możesz dodawać nowe rozszerzenia za pomocą:

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

Jeśli używasz Latte w wersji 2, możesz rejestrować nowe tagi, podając nazwę klasy lub referencję do usługi. Domyślnie wywoływana jest metoda install(), ale można to zmienić, podając nazwę innej metody:

latte:
	# rejestracja niestandardowych znaczników Latte
	macros:
		- App\MyLatteMacros::register         # metoda statyczna, nazwa klasy lub callable
		- @App\MyLatteMacrosFactory           # usługa z metodą install()
		- @App\MyLatteMacrosFactory::register # usługa z metodą register()

services:
	- App\MyLatteMacrosFactory

Routing

Podstawowe ustawienia:

routing:
	# wyświetlić panel routingu w Tracy Bar?
	debugger: ...   # (bool) domyślnie true

	# serializuje router do kontenera DI
	cache: ...      # (bool) domyślnie false

Routing zazwyczaj definiujemy w klasie RouterFactory. Alternatywnie trasy można definiować również w konfiguracji za pomocą par maska: akcja, ale ten sposób nie oferuje tak szerokiej zmienności w ustawieniach:

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

Stałe

Tworzenie stałych PHP.

constants:
	Foobar: 'baz'

Po uruchomieniu aplikacji zostanie utworzona stała Foobar.

Stałe nie powinny służyć jako swego rodzaju globalnie dostępne zmienne. Do przekazywania wartości do obiektów wykorzystaj dependency injection.

PHP

Ustawienia dyrektyw PHP. Przegląd wszystkich dyrektyw znajdziesz na php.net.

php:
	date.timezone: Europe/Prague

Usługi DI

Te usługi są dodawane do kontenera DI:

Nazwa Typ Opis
application.application Nette\Application\Application uruchamiacz całej aplikacji
application.linkGenerator Nette\Application\LinkGenerator LinkGenerator
application.presenterFactory Nette\Application\PresenterFactory fabryka presenterów
application.### Nette\Application\UI\Presenter poszczególne presentery
latte.latteFactory Nette\Bridges\ApplicationLatte\LatteFactory fabryka obiektu Latte\Engine
latte.templateFactory Nette\Application\UI\TemplateFactory fabryka dla $this->template
wersja: 4.0