Nette Documentation Preview

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

.[perex]
Müssen Sie Argumente an Presenter übergeben, die keine Objekte sind (z. B. Information, ob im Debug-Modus ausgeführt wird, Pfade zu Verzeichnissen usw.) und daher nicht automatisch über Autowiring übergeben werden können? Die Lösung besteht darin, sie in ein `Settings`-Objekt zu kapseln.

Der `Settings`-Dienst stellt eine sehr einfache und dennoch nützliche Methode dar, um Informationen über die laufende Anwendung an Presenter bereitzustellen. Seine konkrete Form hängt ganz von Ihren spezifischen Bedürfnissen ab. Beispiel:

```php
namespace App;

class Settings
{
	public function __construct(
		// ab 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 der Presenter die von diesem Dienst bereitgestellten Informationen benötigt, fordert er sie 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) {
			// ...
		}
	}
}
```

{{sitename: Best Practices}}

Einstellungen an Presenter übergeben

Müssen Sie Argumente an Presenter übergeben, die keine Objekte sind (z. B. Information, ob im Debug-Modus ausgeführt wird, Pfade zu Verzeichnissen usw.) und daher nicht automatisch über Autowiring übergeben werden können? Die Lösung besteht darin, sie in ein Settings-Objekt zu kapseln.

Der Settings-Dienst stellt eine sehr einfache und dennoch nützliche Methode dar, um Informationen über die laufende Anwendung an Presenter bereitzustellen. Seine konkrete Form hängt ganz von Ihren spezifischen Bedürfnissen ab. Beispiel:

namespace App;

class Settings
{
	public function __construct(
		// ab 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 der Presenter die von diesem Dienst bereitgestellten Informationen benötigt, fordert er sie 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) {
			// ...
		}
	}
}