Налаштування програми
Огляд варіантів конфігурації застосунку 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
# встановлює локаль
locale: cs_CZ # (string) за замовчуванням null
# клас $this->template
templateClass: App\MyTemplateClass # за замовчуванням Nette\Bridges\ApplicationLatte\DefaultTemplate
Якщо ви використовуєте Latte версії 3, ви можете додати нове розширення, використовуючи:
latte:
расширения:
- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)
Маршрутизація
Основні налаштування:
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 |