Předávání množství modelů z presenteru do komponent

Odo
Člen | 48
+
0
-

Ahoj všem,

možná nato jdu úplně špatně, ale potřeboval bych poradit s předáním (mnoha) modelů do komponent presenteru, který vypadá schematicky takto:

<?php

class MyPresenter extends \Nette\Application\UI\Presenter
{
	private $model1, $model2, ...;

	function __construct(App\Model\Model1 $model1, App\Model\Model2 $model2, ...)
	{
		parent::__construct();
		$this->model1 = $model1;
		$this->model2 = $model2;
		...
	}

	protected function createComponentAdmin1()
	{
		return new Admin1Control($this->model1);
	}

	protected function createComponentAdmin2()
	{
		return new Admin2Control($this->model2);
	}

	protected function createComponentAdmin3()
	{
		return new Admin3Control($this->model1, $this->model2);
	}

    ...

?>

Modely jsou zaregistrovány jako služby. Přijde mi to zbytečně složité, když je modelů hodně. Každá komponenta potřebuje jeden model, někdy víc. Šly by modely vložit přes DI přímo do komponenty? Pokud jsou v konstruktoru komponenty, musím je předávat z presenteru…

Předem dík za rady :)

(používám Nette 2.4)

Editoval Odo (13. 4. 2020 14:30)

David Matějka
Moderator | 6445
+
0
-

ahoj, na tohle se pouzivaji tovarny

Odo
Člen | 48
+
0
-

Dík, továrny zatím moc nechápu. Pro každou komponentu musím mít extra továrnu?

EDIT: mám tím na mysli, že mám nějakou Base komponentu a od ní odvozeno 10 komponent. Potřebuju 10 továren?

Editoval Odo (13. 4. 2020 14:37)

David Matějka
Moderator | 6445
+
0
-

ano, pro kazdou komponentu je potreba tovarna. pokud pouzivas phpstorm, muze ti pomoct plugin na jejich generovani

Odo
Člen | 48
+
0
-

Děkuji :)