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

Обзор вариантов конфигурации приложения Nette.

Приложение

application:
	# отображает вкладку "Nette Application" на синем экране Tracy?
	debugger: ...           # (bool) по умолчанию true

	# будет ли вызываться презентер ошибок при ошибке?
	catchExceptions: ...    # (bool) по умолчанию true на «боевом» сервере

	# имя презентера ошибок
	errorPresenter: Error   # (string) по умолчанию 'Nette:Error'

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

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

Поскольку в режиме разработки презентеры ошибок по умолчанию не вызываются, а ошибки отображаются Tracy, изменение значения catchExceptions на true помогает проверить корректность работы презентеров ошибок во время разработки.

Опция 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

	# класс $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