Настройка приложения

Обзор вариантов конфигурации приложения 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
версия: 4.0