Настройване на приложението
Преглед на опциите за конфигуриране на приложението 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.
Псевдонимите опростяват препратките към често използвани презентатори.
Съпоставянето определя правилата, по които името на класа се извежда от основното име.
Автоматично регистриране на водещи
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
Ако използвате версия 3 на Latte, можете да добавите ново разширение, като използвате:
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
ще бъде създадена след стартиране.
Константите не трябва да служат като глобално достъпни променливи. Използвайте инжектиране на зависимости, за да предавате стойности на обекти.
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 |