- drick
- Člen | 61
Caute, chcel by som vediet ako mozem poslat komponente v presentery
parameter cez sablonu.
Teda v latte si cyklom prechadzam data a v kazdom cykle chcem do komponenty
v presentery poslat id. Nasiel som nejake taketo riesenie:
{?$component[‚karmaForm‘][‚id‘]->value = $reply->id}
zial hadze mi chybu Creating default object from empty value.
Tiez som skusal klasicke:
{control karmaForm $reply->id}
ale tiez nefunguje.
Nejake napady ako to spravit? Dakujem.
- Eda
- Backer | 220
Možná by se pro ten tvůj use-case spíš hodil Multiplier. Ten ti pak pro každou hodnotu jednoduše vytvoří vlastní komponentu.
Evidentně děláš to, že vypisuješ jednu komponentu vícekrát s jinými daty, což moc není příklad best-practise :-)
- drick
- Člen | 61
no asi to cele prepisem do presenteru .. ale pre zaujimavost – Toto
{control karmaForm $reply->id} zavola metodu render? Ako? Kde? Myslíš
renderDefault?
Ja som to totiz takto chcel povodne robit, ale nevedel som sa dopracovat k tomu
parametru.
Editoval drick (17. 6. 2015 18:02)
- Lukeluha
- Člen | 130
Máš komponentu s názvem karmaForm. Ta by měla v sobě obsahovat metodu
render, aby se dala vykreslit. Pokud v šabloně napíšeš
{control karmaForm $id}
, tak se na komponentě karmaForm zavolá
render($id)
. Je to srozumitelnější? Kdyžtak si přečti dokumentaci
Editoval Lukeluha (17. 6. 2015 19:12)
- drick
- Člen | 61
Takto, ak sa este mozem opytat. Ja som si tu zrejme pomylil pojmy. To co ja
chcem je vo svojom presentery vytvorit 2 buttony na pridavanie alebo uberanie
karmy. Robil som to tak, ze som si do tohto svojho presenteru pridal metodu
createComponentReplyForm() a v nej mam:
$form = new Nette\Application\UI\Form;
$form->addButton(‚raise‘, ‚+‘)
->setAttribute(‚onclick‘, ‚increaseKarma()‘);
Teraz chcem spravit to, ze do tejto metody si chcem poslat z latte sablony to
$reply->id. Ako to co najjednoduchsie docielit? Mam si vytvorit novu triedu
len na komponent?
- Lukeluha
- Člen | 130
V tomto případě bych to neřešil vůbec přes formuláře, to přece žádný formulář není, pouze jedno tlačítko. Takže bych přidal obyčejné tlačítko – odkaz přímo do šablony, které bude vést na handler, který odebere/přidá karmu. Pokud bys to chtěl vyřešit AJAXem, poté použij nette ajax knihovnu od Honzy Dobeše
Editoval Lukeluha (17. 6. 2015 19:53)
- Lukeluha
- Člen | 130
Zaprvé by nejspíš mělo být <a><button>..</button></a> a zadruhé co znamená že to nefunguje? Vůbec se nenačte nová stránka? Jak vypadá vygenerovaný odkaz? Kdyžtak ještě zkus přepsat parametr u handleru z $id na $replyId, parametr s názvem $id používá nette pro idčko komponenty, možná to může dělat neplechu.
Editoval Lukeluha (17. 6. 2015 21:19)