Nette Documentation Preview

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

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


Приложение .[#toc-application]
==============================

```neon
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` е възможно да се дефинира двойка представящи грешки:

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

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

[Псевдонимите опростяват препратките към |creating-links#aliases] често използвани презентатори.

Съпоставянето [определя правилата, по които |modules#Mapping] името на класа се извежда от основното име.


Автоматично регистриране на водещи .[#toc-automatic-registration-of-presenters]
-------------------------------------------------------------------------------

Nette автоматично добавя презентатори като услуги към контейнера DI, което значително ускорява създаването им. Може да се конфигурира начинът, по който Nette разпознава предентерите:

```neon
application:
	# за търсене на водещи в картата на класовете в Composer?
	scanComposer: ...      # (bool) по подразбиране е true

	# маска, която трябва да съответства на класа и името на файла
	scanFilter: ...        # (string) по подразбиране е '*Presenter'

	# в кои директории трябва да се търсят презентаторите?
	scanDirs:              # (string[]|false) по подразбиране '%appDir%'
		- %vendorDir%/mymodule
```

Директориите, изброени в `scanDirs`, не заместват подразбиращата се `%appDir%`, а я допълват, така че `scanDirs` ще съдържа и `%appDir%`, и `%vendorDir%/mymodule`. За да презапишем директорията по подразбиране, използваме [възклицателен знак |dependency-injection:configuration#Merging]:

```neon
application:
	scanDirs!:
		- %vendorDir%/mymodule
```

Сканирането на директории може да бъде деактивирано чрез задаване на `false`. Не препоръчваме автоматичното добавяне на презентатори да се прекратява напълно, защото в противен случай производителността на приложението ще намалее.


Latte .[#toc-latte]
===================

Тази настройка влияе глобално върху поведението на Latte в компонентите и презентаторите.

```neon
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:creating-extension], като използвате:

```neon
latte:
	расширения:
		- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)
```

/--comment











\--


Маршрутизиране .[#toc-routing]
==============================

Основни настройки:

```neon
routing:
	# показва раздела Routing в панела Tracy?
	debugger: ...   # (bool) по подразбиране е true

	# сериализирайте маршрутите в DI-контейнера?
	cache: ...      # (bool) по подразбиране е false
```

Маршрутите обикновено се дефинират в класа RouterFactory. Алтернативно, в конфигурацията могат да се дефинират прости правила за маршрутизация, като се използват двойки `маска: действие`:

```neon
routing:
	routes:
		'detail/<id>': Admin:Home:default
		'<presenter>/<action>': Front:Home:default
```


Константи .[#toc-constants]
===========================

Създаване на PHP константи:

```neon
constants:
	Foobar: 'baz'
```

Константата `Foobar` ще бъде създадена след стартиране.

.[note]
Константите не трябва да служат като глобално достъпни променливи. Използвайте [инжектиране на зависимости |dependency-injection:passing-dependencies], за да предавате стойности на обекти.


PHP
===

Можете да инсталирате директиви на PHP. Преглед на всички директиви можете да намерите в [php.net |https://www.php.net/manual/ru/ini.list.php].

```neon
php:
	date.timezone: Europe/Prague
```


Услуги на DI .[#toc-di-services]
================================

Тези услуги се добавят към контейнера DI:

| Име | Тип | Описание
|----------------------------------------------------------
| `application.application` | [api:Nette\Application\Application] | [стартиране на пълно приложение |how-it-works#Nette Application]
| `application.linkGenerator` | [api:Nette\Application\LinkGenerator] | [LinkGenerator |creating-links#LinkGenerator]
| `application.presenterFactory` | [api:Nette\Application\PresenterFactory] | фабрика за презентатори
| `application.###` | [api:Nette\Application\UI\Presenter] | индивидуални презентатори
| `latte.latteFactory` | [api:Nette\Bridges\ApplicationLatte\LatteFactory] | фабрика за `Latte\Engine`
| `latte.templateFactory` | [api:Nette\Application\UI\TemplateFactory] | фабрика за [`$this->template` |templates]

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

Преглед на опциите за конфигуриране на приложението 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