Formulář – Odkazování se v latte na $form->addGroup (použitého v presenteru)
- ZAJDAN
- Člen | 45
čoveče něco dělám špatně, ale toto v mím případě nefunguje.
komponentu s formulářem vyrábímv presenteru:
protected function createComponentRegForm() {
$form = new Form;
$form->setAction('/submit.php');
$form->setMethod('POST');
$form->onSuccess[] = callback($this, 'RegFormSubmitted');
$form->addGroup('personal');
$form->addText('names', 'Jméno:');
$form->addText('address', 'adresa:');
.... and so on
v latte vykresluji nyní takto a tak mi to i funguje, ale chybí mi to vykreslovat po Groupách
{block #content}
{form regForm}
<div class="BodyForm">
<div id="FormContent">
{control regForm}
</div>
<div id="FotoContainer"></div>
</div>
</div>
{/form}
{/block}
Editoval ZAJDAN (5. 3. 2012 17:46)
- ZAJDAN
- Člen | 45
pilec napsal(a):
Aha, až ted jsem si všiml, že používáš addGroup a né addContainer, no mě osobně se zdá Container čistší řešení nebo máš nějaký důvod pro použití group?
nevím přišlo mi to prašť jak uhoď, ale dejme tomu, že zkusím ten container, v presenteru tedy:
protected function createComponentRegForm() {
$form = new Form;
$form->setAction('/submit.php');
$form->setMethod('POST');
$form->onSuccess[] = callback($this, 'RegFormSubmitted');
$form->addContainer('personal');
$form->addText('names', 'Jméno privátu:');
$form->addText('address', 'adresa:');
v latte:
{formContainer personal} {label names}
dostanu vystup:
Unknown macro {formContainer} in
…/Registration/default.latte:3
a navíc ja nechci vypisovat polozku po polozce daneho kontajneru solo
prostě jednoduše do šablony vyrenderovat celý obsah kontejneru
Editoval ZAJDAN (5. 3. 2012 18:19)
- ZAJDAN
- Člen | 45
no myslel jsem si, že v nette budu mlátit weby jak baťa cvičky, ale
nejsem dobrej programátor
to co chci jsem vyřešil úúúúplně jinak…možná lamácky, ale zatím se
to nejvíc přibližuje tomu co požaduji.
v presenteru jsem udělal dvě komponenty a každá z nich má jiný obsah formuláře a pak si v latte zavolám konkretní komponentu přes control:
form regForm}
<div class="BodyForm">
<div id="FormContent">
{control regForm}
</div>
<div class="FotoContainer">
{control regForm1}
</div>
</div>
{/form}
- Milo
- Nette Core | 1283
Add. {formContainer ...}
. Jakou verzi Nette používáš? Tohle
makro je od verze 2.0, ve verzi 2.0-dev ještě nebylo.
A k tomu jak vykreslovat formulář… máš to překombinovaný. Koukni se do dokumentace, jak správně vykreslit formulář je tam moc pěkně popsané.
// Když máš v prezenteru metodu
public function createComponentRegForm ()
{
}
// Tak v šabloně buď formulář vyrenderuješ automaticky celý
{control regForm}
// anebo si ho chceš renderovat input po inputu
{form regForm}
{input name} {label name /}
{input mail} {label mail /}
{/form}
- ZAJDAN
- Člen | 45
díky, ale to neřeší co potřebuju a to proto že:
1 -
{control regForm}
jak píšeš vyrendruje celej formulář a to já nechci, proto jsem chtěl
použít addGroup a renderovat po grupách
2 –
{form regForm}
{input name} {label name /}
{input mail} {label mail /}
{/form}
tady se mi opravdu položku po položce vypisovat nechce
to jak jsem psal, že jsem vytvořil dvě componenty obsahující různé části formuláře a následně je renderuju přes
{form regForm}
<div class='formBody'>
<div id='formContent'>{control regForm}</div>
<div id='formFoto'>{control regForm1}</div>
</div>
{/form}
mi splní to co potřebuji.....zda je to hulvátské řešení netuším, ale funguje přesně jak chci…jednotlivé bloky formuláře zavřu do divů a nastyluju jak potřebuju
Editoval ZAJDAN (6. 3. 2012 7:58)