Ako poslať premennú do komponentu?
- Anubis
- Člen | 6
Zdravím, začínam s nette, prerábam si jedno fórum, ktoré som písal bez frameworkov a narazil som na problém pri vytváraní formu. Potrebujem nejako odoslať do databázy aj id práve prezeraného článku, existuje niečo takéto?
<?php
protected function createComponentPridajPrispevok($clanok_id)
{
$prispevokForm = new Nette\Application\UI\Form;
$prispevokForm->addText('fp_prispevok')->setValue('Sem napíšte svoj komentár')->setAttribute('onfocus','vymaz(this,\'Sem napíšte svoj komentár\')')->setAttribute('style','width: 950px;');
$prispevokForm->addSubmit('send','Pridať');
$prispevokForm->addHidden('fp_clanok_id')->setValue($clanok_id);
$prispevokForm->getElementPrototype()->id = 'form-pridaj-prispevok';
$prispevokForm->getElementPrototype()->style = 'display: none;';
$prispevokForm->onSuccess[] = $this->pridajPrispevokSucceeded;
return $prispevokForm;
}
?>
A ak hej, ako by som mohol poslať tú premennú? Pretože niečo takéto:
{control pridajPrispevok($aktualny_clanok->fc_cid)}
očividne nefunguje :(
- Oli
- Člen | 1215
Rekl bych, ze tohle je spis zalezitost OOP nez frameworku. Paklize teda chapu
dobre tvuj dotaz.
to id by jsi mel mit v nejake metode actionDefault($id)
, tak si to
predas do promenne tridy a predas tomu formulari… Není ale potřeba to vubec
ukládat do hidden inputu. To ID tam bude stejne i po odeslani formulare.
- Anubis
- Člen | 6
Ďakujem za odpovede, spravil som to teda cez $this->getParameter(), ale za posledné hodiny som našiel veľa takých diskusií, kde boli podobné kódy jak ten môj, tak som to chcel vyskúšať. Pretože takto, ak by som sa chcel dostať napríklad k menu autora článku, musel by som si ho vytiahnuť z databázy cez to id. Nevadí, keď to nejde, tak to nejde..
- Šaman
- Člen | 2666
Ty ale zkoušíš předat parametr továrničce na komponentu, to nejde.
getParameter()
nepotřebuješ, ty ten parametr předáš pohledu,
který komponentu vykresluje (ale musí to být už do action metody, ne až
render) a následně ho předáš už hotové instanci konkrétní komponenty
(formuláře). Inspirovat se můžeš třeba tady.
Editoval Šaman (21. 5. 2014 1:13)
- thm
- Člen | 147
Jinak k tomu, že
{control pridajPrispevok($aktualny_clanok->fc_cid)} očividne nefunguje :(
mohu říct, že někdy se může hodit
{control prispevky:seznam, $by}
Sice to není předání proměnné do komponenty, ale toto zavolá na komponente prispevky renderSeznam($by). Prostě pošleš nějaká data přímo do render metody komponenty, což se někdy hodí. Teoreticky bys komponentu ještě asi mohl dokonfigurovat tam, ale to by se rozhodně nemělo.
- Šaman
- Člen | 2666
thm napsal(a):
Jinak k tomu, že
{control pridajPrispevok($aktualny_clanok->fc_cid)} očividne nefunguje :(
mohu říct, že někdy se může hodit
{control prispevky:seznam, $by}
Sice to není předání proměnné do komponenty, ale toto zavolá na komponente prispevky renderSeznam($by). Prostě pošleš nějaká data přímo do render metody komponenty, což se někdy hodí. Teoreticky bys komponentu ještě asi mohl dokonfigurovat tam, ale to by se rozhodně nemělo.
Tohle je použitelné v některých případech (typicky komponenta která jen něco vykresluje), ale ne u formulářů. U formulářů je pozdě něco nastavovat už při vykreslování.