Настройка приложения
Обзор вариантов конфигурации приложения Nette.
Приложение
application:
# отображает вкладку "Nette Application" на синем экране Tracy?
debugger: ... # (bool) по умолчанию true
# будет ли вызываться error-presenter при ошибке?
# имеет значение только в режиме разработчика
catchExceptions: ... # (bool) по умолчанию равно true
# имя презентера ошибок
errorPresenter: Error # (string|array) по умолчанию 'Nette:Error'
# определяет псевдонимы для ведущих и событий
aliases: ...
# определяет правила для преобразования имени ведущего в класс
mapping: ...
# выдают ли плохие ссылки предупреждения?
# имеет силу только в режиме разработки
silentLinks: ... # (bool) по умолчанию false
Начиная с версии nette/application
3.2 можно определить пару
презентеров ошибок:
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
Эти сервисы добавляются в контейнер DI:
Имя | Тип | Описание |
---|---|---|
application.application |
Nette\Application\Application | full application launcher |
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 |