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

Преглед на опциите за конфигуриране на приложението Nette.

Приложение

application:
	# показва раздела "Nette Application" на синия екран на Tracy?
	debugger: ...           # (bool) по подразбиране е true

	# Ще се извика ли error-presenter при грешка?
	# има ефект само в режим за разработчици
	catchExceptions: ...    # (true|false|4xx) по подразбиране е 4xx

	# име на водещ на грешка
	errorPresenter: Error   # (string|array) по подразбиране е 'Nette:Error'

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

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

От версия 3.2 на nette/application стойността по подразбиране за catchExceptions е 4xx, което означава, че презентаторът на грешки се използва само за Nette\Application\BadRequestException изключения, представляващи HTTP грешки 4xx. Освен това е възможно да се дефинира двойка error-presenters:

application:
	errorPresenter:
		4xx: Error4xx   # за Nette\Application\BadRequestException
		5xx: Error5xx   # за други изключения

Опцията silentLinks определя как Nette да се държи в режим на разработчик, когато генерирането на връзки е неуспешно (например поради липса на презентатор и т.н.). Стойността по подразбиране false означава, че Nette работи E_USER_WARNING. Задаването на true потиска това съобщение за грешка. В производствена среда винаги се извиква E_USER_WARNING. Можем също така да повлияем на това поведение, като зададем променливата на водещия $invalidLinkMode.

Съпоставянето определя правилата, по които името на класа се извежда от основното име.

Автоматично регистриране на водещи

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

	# клас $this->template
	templateClass: App\MyTemplateClass # по подразбиране Nette\Bridges\ApplicationLatte\DefaultTemplate

Ако използвате версия 3 на Latte, можете да добавите ново разширение, като използвате:

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 ще бъде създадена след стартиране.

Константите не трябва да служат като глобално достъпни променливи. Използвайте инжектиране на зависимости, за да предавате стойности на обекти.

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
версия: 4.0