jak správně předat parametry továrničce

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
sevca79
Člen | 55
+
0
-

ahoj,
mám továrničku na grid nějak takhle

class MyGridFactory {
    public $gridType;
    private $myModel;

    public function __construct(MyModel $myModel) {
		$this->myModel=$myModel;
    }

    public function create() {
        $grid=new Grid();
        $grid->setDatasource($this->myModel->getData($this->gridType));
		/*nejaky vypisu gridu */
        return $grid;
    }
}

v presenteru v metode action si naplnim ten verejny parametr

/** @var MyGridFactory @inject */
public $myGridFactory;

public function actionMyAction() {
    $this->myGridFactory->gridType=1;
}

public function createComponentMyGrid() {
    return $this->myGridFactory->create();
}

něco mi říká, že to není úplně nejsprávnější řešení? Pokud fakt ne, tak prosím jak takovouto „trivialitu“ řešit správně?
Asi bych mohl v tom action si zapráskat presenter nějakým parametrem a ten potom předat tomu create, ale to taky není asi úplně správně..

děkuji za odpovědi..

CZechBoY
Člen | 3608
+
0
-

Pokud máš single-action presentery tak je celkem bezpečný používat property takže bych se toho nebál…

class MyPresenter extends Presenter
{
	private $id;

	public function actionDefault($id)
	{
		validate($id);

		$this->id = $id;
	}

	protected function createComponentAbc()
	{
		return $this->factory->create($this->id);
	}
}

Editoval CZechBoY (11. 5. 2018 16:59)