Nette Documentation Preview

syntax
Предаване на параметри на презентатори
**************************************

.[perex]
Имате ли нужда да предавате аргументи на презентаторите, които не са обекти (напр. информация за това дали се изпълнява в режим на отстраняване на грешки, пътища до директории и т.н.) и следователно не могат да бъдат предадени автоматично с помощта на autoconnect? Решението е да ги капсулирате в обект `Settings`.

Услугата `Settings` е много прост и полезен начин за предоставяне на информация за работещото приложение на говорителите. Конкретният му вид зависи изцяло от конкретните ви нужди. Пример:

```php
namespace App;

class Settings
{
	public function __construct(
		// от PHP 8.1 е възможно да се зададе readonly
		public bool $debugMode,
		public string $appDir,
		// и така нататък
	) {}
}
```

Пример за регистрация в конфигурация:

```neon
services:
	- App\Settings(
		%debugMode%,
		%appDir%,
	)
```

Когато водещият се нуждае от информацията, предоставяна от тази услуга, той просто я изисква от конструктора:

```php
class MyPresenter extends Nette\Application\UI\Presenter
{
	public function __construct(
		private App\Settings $settings,
	) {}

	public function renderDefault()
	{
		if ($this->settings->debugMode) {
			// ...
		}
	}
}
```

{{sitename: Най-добри практики}}

Предаване на параметри на презентатори

Имате ли нужда да предавате аргументи на презентаторите, които не са обекти (напр. информация за това дали се изпълнява в режим на отстраняване на грешки, пътища до директории и т.н.) и следователно не могат да бъдат предадени автоматично с помощта на autoconnect? Решението е да ги капсулирате в обект Settings.

Услугата Settings е много прост и полезен начин за предоставяне на информация за работещото приложение на говорителите. Конкретният му вид зависи изцяло от конкретните ви нужди. Пример:

namespace App;

class Settings
{
	public function __construct(
		// от PHP 8.1 е възможно да се зададе readonly
		public bool $debugMode,
		public string $appDir,
		// и така нататък
	) {}
}

Пример за регистрация в конфигурация:

services:
	- App\Settings(
		%debugMode%,
		%appDir%,
	)

Когато водещият се нуждае от информацията, предоставяна от тази услуга, той просто я изисква от конструктора:

class MyPresenter extends Nette\Application\UI\Presenter
{
	public function __construct(
		private App\Settings $settings,
	) {}

	public function renderDefault()
	{
		if ($this->settings->debugMode) {
			// ...
		}
	}
}