Настройване на приложението
Преглед на опциите за конфигуриране на приложението Nette.
Приложение
application:
# показва раздела "Nette Application" на синия екран на Tracy?
debugger: ... # (bool) по подразбиране е true
# ще бъде ли извикан презентаторът на грешки в случай на грешка?
catchExceptions: ... # (bool) по подразбиране е true на "battle" сървър
# име на водещ на грешка
errorPresenter: Error # (string) по подразбиране е 'Nette:Error'
# дефинира правила за съпоставяне на името на водещия с клас
mapping: ...
# дали лошите връзки предизвикват предупреждения?
# валидно само в режим на разработка
silentLinks: ... # (bool) по подразбиране е false
Тъй като в режим на разработка презентаторите на грешки не се
извикват по подразбиране, а грешките се показват от Tracy, промяната на
стойността на catchExceptions
на true
помага да се провери дали
презентаторите на грешки работят правилно по време на разработката.
Опцията 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 |