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)