Předávání dat z šablony do presenterů
- jim.street
- Člen | 26
Ahoj,
nevěděl jsem, jak toto téma pojmenovat. Zkusím proto rozebrat svůj problém
po lopatě.
Mám šablonu Homepage:vysledky. Tato šablona vypisuje řešitele úloh,
kolik získali bodů za jednotlivé úlohy a podobně. Tyto data jí předává
HomepagePresenter a šablona tyto uživatele vypisuje přes foreach. Jenže, já
jakožto přihlášený uživatel bych si rád rozklikl například profil
nejlepšího řešitele. Proto jsem do foreache vložil odkaz, který odkazuje
na šablonu Profile:show, jednoduše <a href=„{link
Profile:show}“>.
Jenže, potřeboval bych předat nějaký parametr (např user[‚id‘], popř.
celého usera). Odhaduji, že by to mohlo být nějak takto – <a
href=„{link Profile:show, $user}“>. Jenže, nevím, co dál, jak s $user
pracovat.
V ideálním případě bych měl metodu renderShow v ProfilePresenteru,
která by mi pomocí předaného uživatele z šablony Homepage:vysledky
vyhledala daného uživatele v DB a předala jeho jméno a příjmení. Mohl by
mi někdo poradit, jak na to?
- Michal Vyšinský
- Člen | 608
Do link si pošli pouze id:
<a href="{link Profile:show id=>$id}">
V renderShow pak dostaneš jako parametr $id onnu hodnotu, pomocí které si znovu vytáhneš z databáze potřebná data.
public function renderShow($id) {
$this->template->user = // zde najdi uživatele podle id, předá se ti do šablony
}
- jim.street
- Člen | 26
Dík.
Potřeboval bych se ještě zeptat, moc se mi nechtějí psát query do
presenterů. Radši bych jej zapsal do modelu. Mám model ‚Uzivatele‘.
Napsal jsem si do něj funkci:
public function getUserFromId($id)
{
return $this->database->getUser()->where(‚id‘ = $id); // nevim
jeslti jo syntakticky spravne
}
V presenteru mám prozatím:
public function renderShow($id)
{
$this->template->user = /TODO/;
}
Jak bych měl správně zavolat funkci getUserFromId z modelu Uzivatele? Pripadne vyvorit si v prezenteru instanci Uzivatele::getInstance() ?
Editoval jim.street (8. 10. 2014 17:12)
- Michal Vyšinský
- Člen | 608
Možná by to chtělo projít dokumentaci… Třídu Uzivatele si registruj jako službu a injektni si ji do presenteru.
Editoval Michal Vyšinský (8. 10. 2014 17:36)