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
 
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
 
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)