checkboxlist container | proměná formulář
- masterr
- Začátečník | 141
presenter:
$con = $form->addContainer('sel');
$parameters=dibi::query('SELECT * FROM [shopmaster_goods_parameters] ORDER BY id DESC') ;
foreach ($parameters as $parameter) {
$items = dibi::query('SELECT id,hodnota FROM [shopmaster_goods_parameters_base] where p_id='.$parameter->id.'')
->fetchPairs('id','hodnota');
$i++;
$con->addCheckboxList('selected'.$i.'', '', $items) ;
}
šablona:
{foreach $form['sel']->controls as $item}<tr><td width="90">{$item->label}:</td><td> {$item->control}</td></tr>{/foreach}
Nic mi to nezobrazí, proč?
protected function createComponentAddgoodsForm()
{
$form = new AppForm;
$i=3;
$this->template->icko=$i;
}
šablona:
{!icko}
Undefined variable icko. Jak se to má napsat? Může to být v tom formu?THX
- Čelo
- Člen | 42
Možná by se ti hodilo toto:
https://forum.nette.org/…ni-formularu
a pokud něco předáváš do šablony:
$this->template->icko=$i;
tak v šabloně musíš volat přes
{$icko} nebo neescapovane {!$icko}
Editoval Čelo (24. 10. 2010 18:45)
- masterr
- Začátečník | 141
To je mi jasné, je to logické. Mám to tak nebo si to alespon myslím …Mýlím se?
{control addgoodsForm begin}
{control addgoodsForm errors}
{assign form => $control['addgoodsForm']}
{!$icko}
protected function createComponentAddgoodsForm()
{
$form = new AppForm;
$this->template->icko=5;
$form->addSubmit('ok', 'Uložit');
$form->onSubmit[] = callback($this, 'addgoodsFormSubmitted');
return $form;
}
- se mi eště pls koukni na ten container, proč nejde použít s checkboxlist nebo jak ho mám pak vypsat v šabloně?
Mám dvě možnosti jak vypsat ty checkboxlisty:
1)Pomocí containeru a foreach, ale neznam tu sysntaxy na zobrazeni v šabloně nebo spíš znám, ale nefunguje mi s checkboxlistem…
2)for cyklem, ale potřebuju tu hodnotu icko dostat do šablony a nějak si jí tam nechce :D
Dík moc
- Solution
- Člen | 50
Tady je problém, že když se vytváří komponenta, tak je už dávno
template registrovaná, tu propertii do ní sice uložíš, ale už si ji
nemůžeš vypsat, od toho jsou render metody.
Zkus zneužít flash messages, pokud to opravdu nutně potřebuješ
takto mít.
Editoval Padik (29. 10. 2010 11:17)
- jasir
- Člen | 746
createComponentXXX
se volá, až když je daná komponenta
potřebná, u formulářů tedy klidně až během renderování šablony.
Když si na komponentu šáhneš manuálně v renderXXX
:
<?php
$dummyForm = $this['myForm'];
?>
tak se továrnička vyvolá a to tvoje plnění proměnné do Template
proběhne před renderováním šablony
a proměnná tak bude k dispozici. Jestli ale cpát proměnné do šablony v
createComponentXXX
je dobrý nápad
nechávám na tobě…
- arron
- Člen | 464
Tak nevim jestli uz jsi to vyresil nebo ne, nicmene co se to checkboxlistu tyka, tak rozhodne pres foreach tak, jak to mas v prvnim prispevku. Proc Ti z te tovarnicky nejde vlozit promena do sablony uz tu zaznelo, jaky je problem s vypsanim toho checkboxlistu nikoliv, na prvni pohled se mi nezda, ze by tam byla nejaka chyba.
- masterr
- Začátečník | 141
Myslíš takto?
{foreach $form['sel']->controls as $item}<tr><td width="90">{$item->label}:</td><td> {$item->control}</td></tr>{/foreach}
To jsem nevyřešil, protože to nic nevypíše. Zdá se mi jako kdyby ten container nešel použít s checkboxlistem. To schválně vyzkoušej, když budeš mít chvilku.
Edit:Už jsem to rozchodil. Sice trošku jinak…
Dík všem za pomoc.
Editoval masterr (1. 11. 2010 21:44)