Конфігурація застосунків
Огляд конфігураційних опцій для застосунків 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 |