Налаштування програми

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

Додаток

application:
	# відображає вкладку "Nette Application" на синьому екрані Tracy?
	debugger: ...           # (bool) за замовчуванням true

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

	# ім'я презентера помилок
	errorPresenter: Error   # (string|array) за замовчуванням 'Nette:Error'

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

	# визначає правила для перетворення імені ведучого в клас
	mapping: ...

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

Починаючи з версії 3.2 nette/application можна визначити пару презентувальників помилок:

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

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

Псевдоніми спрощують посилання на часто використовуваних доповідачів.

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

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

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

application:
	# для пошуку презентерів у карті класів Composer?
	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 для основного шаблону (true) або для всіх компонентів (all)?
	debugger: ...        # (true|false|'all') за замовчуванням true

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

	# вмикає [режим строгого |latte:develop#strict mode]синтаксичного аналізу
	strictParsing: ...   # (bool) за замовчуванням false

	# включає [перевірку згенерованого коду |latte:develop#Checking Generated Code]
	phpLinter: ...       # (string) за замовчуванням null

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

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

latte:
	расширения:
		- Latte\Essential\TranslatorExtension

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

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

routing:
	# відображає вкладку Routing на панелі Tracy?
	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 буде створена після запуску.

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

PHP

Ви можете встановлювати директиви PHP. Огляд усіх директив можна знайти на сайті php.net.

php:
	date.timezone: Europe/Prague

Послуги з проведення розслідувань

Ці сервіси додаються до контейнера 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