Predavanie zavislosti do komponenty
- vladimir.biro
- Člen | 163
Ahojte.
Mam takyto problem.
BasePresenter
Tu v startup() volam model, v ktorom cez SetXXX() definujem premennu.
Nasledne tovarnickou vytvaram formular, ktory pri spracovani vola iny model, ktory ale potrebuje tu premennu, ktoru som si vytvoril v BasePressenteri. Cize v tomto modeli volam ten insty model ako v BasePressenteri a zavolam metodu GetXXX.
No ked tuto metodu zavolam, vystup je len NULL.
Nasmerujete ma prosim nietko, co robim zle, resp ako to robit dobre?
Dakujem.
- vladimir.biro
- Člen | 163
No ide o to, ze to potrebujem v kazdej tovarni a budem ich robit do buducna viac a chcel som to mat poriesene tak nejako automaticky a nie aby som na to musel stale mysliet. Proste co najmenej pisania som s tych chcel mat :)
- vladimir.biro
- Člen | 163
CZechBoY napsal(a):
Odkud tu promennou vytahnes?
Definujem ju prave v BasePresenteri. Ta premenna je:
<?php
public function startup()
{
parent::startup();
/** Definuj projekt podla prihlaseneho uzivatela */
$this->projectManager->setProject( $this->getUser()->getIdentity()->id_project );
}
?>
Potom v spracovani formulara volam iny model a tam:
<?php
public function __construct(Context $database, Model\ProjectManager $projectManager)
{
$this->database = $database;
$this->idProject = $projectManager->getProject();
}
public function addStaticPage($param)
{
$param['id_project'] = $this->idProject;
return $this->database->table('static_page')->insert($param);
}
?>
Editoval vladimir.biro (15. 11. 2017 21:15)
- CZechBoY
- Člen | 3608
jo, takze z identity uzivatele…
Nebylo by lepsi mit ulozeny aktualne zvoleny id projektu nekde jinde? Co treba
univerzalni databaze.
Hlavne si na tenhle ucel udelej nejakou sluzbu odkud to budou vsichni vytahovat,
at to netahaj vsichni z identity uzivatele nebo kdovi odkud.
- vladimir.biro
- Člen | 163
CZechBoY napsal(a):
jo, takze z identity uzivatele…
Nebylo by lepsi mit ulozeny aktualne zvoleny id projektu nekde jinde? Co treba univerzalni databaze.
Hlavne si na tenhle ucel udelej nejakou sluzbu odkud to budou vsichni vytahovat, at to netahaj vsichni z identity uzivatele nebo kdovi odkud.
Noooo … ved ten projectManager je sluzba nie? V base presenteri zadefinujem projekt v sluzbe a potom si vsetci ostatni tuti info tahaju zo sluzby.
Ci nieco zle chapem?
- vladimir.biro
- Člen | 163
Kludne ma pouc, ak mam nejake nazvoslovie blbo. Rad sa poucim. :)
Co sa tyka toho problemu, tak som sa na cas venoval niecomu inemu a teraz sa idem do toho opat hryzut. Uvidime, ci s tym dako pohnem. Ale nejde mi to do hlavy, lebo som uz v predchadzajucom projekte podobne vec riesil a nebol problem :/
Ved ked tym nepohnem, tak sem zase napisem.
- vladimir.biro
- Člen | 163
Takze problem je vyrieseny. Nejdem tu ani pisat, ze co bol problem, pretoze to bola proste debilna chyba z nepozornosti. :)