Nette Documentation Preview

syntax
Einstellungen an Presenter übergeben
************************************

.[perex]
Müssen Sie an Presenter Argumente übergeben, die keine Objekte sind (z. B. die Information, ob die Anwendung im Debug-Modus läuft, Pfade zu Verzeichnissen usw.) und die deshalb nicht automatisch per Autowiring übergeben werden können? Die Lösung ist, sie in ein Objekt `Settings` zu kapseln.

Der Service `Settings` stellt einen sehr einfachen und zugleich nützlichen Weg dar, Presentern Informationen über die laufende Anwendung bereitzustellen. Seine konkrete Gestalt hängt ganz von Ihren Bedürfnissen ab. Beispiel:

```php
namespace App;

class Settings
{
	public function __construct(
		// seit PHP 8.1 kann readonly angegeben werden
		public bool $debugMode,
		public string $appDir,
		// und so weiter
	) {}
}
```

Beispiel für die Registrierung in der Konfiguration:

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

Wenn ein Presenter die von diesem Service bereitgestellten Informationen braucht, fordert er ihn einfach im Konstruktor an:

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

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

Einstellungen an Presenter übergeben

Müssen Sie an Presenter Argumente übergeben, die keine Objekte sind (z. B. die Information, ob die Anwendung im Debug-Modus läuft, Pfade zu Verzeichnissen usw.) und die deshalb nicht automatisch per Autowiring übergeben werden können? Die Lösung ist, sie in ein Objekt Settings zu kapseln.

Der Service Settings stellt einen sehr einfachen und zugleich nützlichen Weg dar, Presentern Informationen über die laufende Anwendung bereitzustellen. Seine konkrete Gestalt hängt ganz von Ihren Bedürfnissen ab. Beispiel:

namespace App;

class Settings
{
	public function __construct(
		// seit PHP 8.1 kann readonly angegeben werden
		public bool $debugMode,
		public string $appDir,
		// und so weiter
	) {}
}

Beispiel für die Registrierung in der Konfiguration:

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

Wenn ein Presenter die von diesem Service bereitgestellten Informationen braucht, fordert er ihn einfach im Konstruktor an:

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

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