Nette Documentation Preview

syntax
Posredovanje nastavitev v presenterje
*************************************

.[perex]
Ali morate v presenterje posredovati argumente, ki niso objekti (npr. informacijo, ali teče v načinu za odpravljanje napak, poti do map itd.), in jih torej ni mogoče samodejno posredovati s pomočjo autowiringa? Rešitev je, da jih zapakirate v objekt `Settings`.

Storitev `Settings` predstavlja zelo enostaven in hkrati uporaben način za zagotavljanje informacij o tekoči aplikaciji presenterjem. Njena konkretna oblika je odvisna izključno od vaših specifičnih potreb. Primer:

```php
namespace App;

class Settings
{
	public function __construct(
		// od PHP 8.1 je mogoče navesti readonly
		public bool $debugMode,
		public string $appDir,
		// in tako naprej
	) {}
}
```

Primer registracije v konfiguraciji:

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

Ko bo presenter potreboval informacije, ki jih zagotavlja ta storitev, jo bo preprosto zahteval v konstruktorju:

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

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

{{sitename: Best Practices}}

Posredovanje nastavitev v presenterje

Ali morate v presenterje posredovati argumente, ki niso objekti (npr. informacijo, ali teče v načinu za odpravljanje napak, poti do map itd.), in jih torej ni mogoče samodejno posredovati s pomočjo autowiringa? Rešitev je, da jih zapakirate v objekt Settings.

Storitev Settings predstavlja zelo enostaven in hkrati uporaben način za zagotavljanje informacij o tekoči aplikaciji presenterjem. Njena konkretna oblika je odvisna izključno od vaših specifičnih potreb. Primer:

namespace App;

class Settings
{
	public function __construct(
		// od PHP 8.1 je mogoče navesti readonly
		public bool $debugMode,
		public string $appDir,
		// in tako naprej
	) {}
}

Primer registracije v konfiguraciji:

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

Ko bo presenter potreboval informacije, ki jih zagotavlja ta storitev, jo bo preprosto zahteval v konstruktorju:

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

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