Nette Documentation Preview

syntax
Πέρασμα ρυθμίσεων στους presenters
**********************************

.[perex]
Χρειάζεστε να περάσετε ορίσματα στους presenters που δεν είναι αντικείμενα (π.χ. πληροφορία αν τρέχουν σε debug mode, διαδρομές προς καταλόγους κ.λπ.), και επομένως δεν μπορούν να περαστούν αυτόματα μέσω autowiring; Η λύση είναι να τα ενσωματώσετε σε ένα αντικείμενο `Settings`.

Η υπηρεσία `Settings` αποτελεί έναν πολύ εύκολο και ταυτόχρονα χρήσιμο τρόπο παροχής πληροφοριών σχετικά με την τρέχουσα εφαρμογή στους presenters. Η συγκεκριμένη της μορφή εξαρτάται αποκλειστικά από τις δικές σας συγκεκριμένες ανάγκες. Παράδειγμα:

```php
namespace App;

class Settings
{
	public function __construct(
		// από την PHP 8.1 είναι δυνατό να δηλωθεί readonly
		public bool $debugMode,
		public string $appDir,
		// και ούτω καθεξής
	) {}
}
```

Παράδειγμα καταχώρησης στη διαμόρφωση:

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

Όταν ο presenter χρειαστεί τις πληροφορίες που παρέχονται από αυτή την υπηρεσία, απλά θα τη ζητήσει στον constructor:

```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}}

Πέρασμα ρυθμίσεων στους presenters

Χρειάζεστε να περάσετε ορίσματα στους presenters που δεν είναι αντικείμενα (π.χ. πληροφορία αν τρέχουν σε debug mode, διαδρομές προς καταλόγους κ.λπ.), και επομένως δεν μπορούν να περαστούν αυτόματα μέσω autowiring; Η λύση είναι να τα ενσωματώσετε σε ένα αντικείμενο Settings.

Η υπηρεσία Settings αποτελεί έναν πολύ εύκολο και ταυτόχρονα χρήσιμο τρόπο παροχής πληροφοριών σχετικά με την τρέχουσα εφαρμογή στους presenters. Η συγκεκριμένη της μορφή εξαρτάται αποκλειστικά από τις δικές σας συγκεκριμένες ανάγκες. Παράδειγμα:

namespace App;

class Settings
{
	public function __construct(
		// από την PHP 8.1 είναι δυνατό να δηλωθεί readonly
		public bool $debugMode,
		public string $appDir,
		// και ούτω καθεξής
	) {}
}

Παράδειγμα καταχώρησης στη διαμόρφωση:

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

Όταν ο presenter χρειαστεί τις πληροφορίες που παρέχονται από αυτή την υπηρεσία, απλά θα τη ζητήσει στον constructor:

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

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