Конфігурація застосунків

Огляд конфігураційних опцій для застосунків Nette.

Application

application:
	# показувати панель "Nette Application" у Tracy BlueScreen?
	debugger: ...           # (bool) за замовчуванням true

	# чи буде при помилці викликатися error-presenter?
	# має ефект лише в режимі розробки
	catchExceptions: ...    # (bool) за замовчуванням true

	# назва error-presenter
	errorPresenter: Error   # (string|array) за замовчуванням 'Nette:Error'

	# визначає аліаси для презентерів та дій
	aliases: ...

	# визначає правила для перекладу назви presenter на клас
	mapping: ...

	# неправильні посилання не генерують попередження?
	# має ефект лише в режимі розробки
	silentLinks: ...        # (bool) за замовчуванням false

Починаючи з версії nette/application 3.2, можна визначити пару error-presenter'ів:

application:
	errorPresenter:
		4xx: Error4xx   # для винятку Nette\Application\BadRequestException
		5xx: Error5xx   # для інших винятків

Опція silentLinks визначає, як Nette поводитиметься в режимі розробки, коли генерація посилання зазнає невдачі (наприклад, тому що не існує presenter тощо). Стандартне значення false означає, що Nette викине помилку E_USER_WARNING. Встановлення на true призведе до придушення цього повідомлення про помилку. У робочому середовищі E_USER_WARNING викликається завжди. Цю поведінку можна також контролювати, встановивши змінну presenter $invalidLinkMode.

Аліаси спрощують посилання на часто використовувані презентери.

Мапінг визначає правила, за якими з назви presenter виводиться назва класу.

Автоматична реєстрація презентерів

Nette автоматично додає презентери як сервіси до DI-контейнера, що суттєво прискорює їхнє створення. Як Nette знаходить презентери, можна налаштувати:

application:
	# шукати презентери в Composer class map?
	scanComposer: ...      # (bool) за замовчуванням true

	# маска, якій має відповідати назва класу та файлу
	scanFilter: ...        # (string) за замовчуванням '*Presenter'

	# у яких каталогах шукати презентери?
	scanDirs:              # (string[]|false) за замовчуванням '%appDir%'
		- %vendorDir%/mymodule

Каталоги, зазначені в scanDirs, не перезаписують стандартне значення %appDir%, а доповнюють його, отже scanDirs міститиме обидва шляхи %appDir% та %vendorDir%/mymodule. Якщо ми хочемо виключити стандартний каталог, використаємо знак оклику, який перезапише значення:

application:
	scanDirs!:
		- %vendorDir%/mymodule

Сканування каталогів можна вимкнути, вказавши значення false. Не рекомендуємо повністю придушувати автоматичне додавання презентерів, оскільки інакше це призведе до зниження швидкодії застосунку.

Шаблони Latte

За допомогою цього налаштування можна глобально вплинути на поведінку Latte в компонентах та презентерах.

latte:
	# показувати панель Latte в Tracy Bar для головного шаблону (true) або всіх компонентів (all)?
	debugger: ...        # (true|false|'all') за замовчуванням true

	# генерує шаблони із заголовком declare(strict_types=1)
	strictTypes: ...     # (bool) за замовчуванням false

	# вмикає режим [суворого парсера |latte:develop#striktní režim]
	strictParsing: ...   # (bool) за замовчуванням false

	# активує [перевірку згенерованого коду |latte:develop#Kontrola vygenerovaného kódu]
	phpLinter: ...       # (string) за замовчуванням null

	# встановлює локаль
	locale: cs_CZ        # (string) за замовчуванням null

	# клас об'єкта $this->template
	templateClass: App\MyTemplateClass # за замовчуванням Nette\Bridges\ApplicationLatte\DefaultTemplate

Якщо ви використовуєте Latte версії 3, ви можете додавати нові розширення за допомогою:

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

Якщо ви використовуєте Latte версії 2, ви можете реєструвати нові теги, вказавши ім'я класу або посилання на сервіс. За замовчуванням викликається метод install(), але це можна змінити, вказавши ім'я іншого методу:

latte:
	# реєстрація користувацьких тегів Latte
	macros:
		- App\MyLatteMacros::register         # статичний метод, назва класу або callable
		- @App\MyLatteMacrosFactory           # сервіс з методом install()
		- @App\MyLatteMacrosFactory::register # сервіс з методом register()

services:
	- App\MyLatteMacrosFactory

Маршрутизація

Основні налаштування:

routing:
	# показувати панель маршрутизації в Tracy Bar?
	debugger: ...   # (bool) за замовчуванням true

	# серіалізує маршрутизатор до DI-контейнера
	cache: ...      # (bool) за замовчуванням false

Маршрутизацію зазвичай визначаємо в класі RouterFactory. Альтернативно, маршрути можна визначити також у конфігурації за допомогою пар маска: дія, але цей спосіб не пропонує такої широкої варіативності в налаштуваннях:

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

Константи

Створення PHP-констант.

constants:
	Foobar: 'baz'

Після запуску застосунку буде створена константа Foobar.

Константи не повинні слугувати як якісь глобально доступні змінні. Для передачі значень в об'єкти використовуйте впровадження залежностей.

PHP

Налаштування директив PHP. Огляд усіх директив ви знайдете на php.net.

php:
	date.timezone: Europe/Prague

Сервіси DI

Ці сервіси додаються до DI-контейнера:

Назва Тип Опис
application.application Nette\Application\Application запускач усього застосунку
application.linkGenerator Nette\Application\LinkGenerator LinkGenerator
application.presenterFactory Nette\Application\PresenterFactory фабрика презентерів
application.### Nette\Application\UI\Presenter окремі презентери
latte.latteFactory Nette\Bridges\ApplicationLatte\LatteFactory фабрика об'єкта Latte\Engine
latte.templateFactory Nette\Application\UI\TemplateFactory фабрика для $this->template
версія: 4.0