Nette Documentation Preview

syntax
Налаштування програми
*********************

.[perex]
Огляд варіантів конфігурації застосунку Nette.


Додаток .[#toc-application]
===========================

```neon
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 |creating-links#Invalid-Links].

Карта [mapping визначає правила |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

	# клас $this->template
	templateClass: App\MyTemplateClass # за замовчуванням Nette\Bridges\ApplicationLatte\DefaultTemplate
```

Якщо ви використовуєте Latte версії 3, ви можете додати нове [розширення |latte:creating-extension], використовуючи:

```neon
latte:
	расширения:
		- Latte\Essential\TranslatorExtension
```

/--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 |dependency-injection:passing-dependencies].


PHP
===

Ви можете встановлювати директиви PHP. Огляд усіх директив можна знайти на сайті [php.net |https://www.php.net/manual/ru/ini.list.php].

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

Налаштування програми

Огляд варіантів конфігурації застосунку 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