Makra pro „ruční“ vykreslování formulářů
- neznalek
- Člen | 60
Dejme tomu ze mam nejaky doraznik, kde otazky a odpovdi nacitam z tabulky.. Otazka bude v policku [label]. Odpoved bude ve forme [checkbox] [label]
Kostra:
Zkousel jsem to udelat pres conteiner, ale nepodarilo se.. Taky je trosku problem s tim ze nazvy checkboxu musi byt ve forme: test_form[otazka][odpoved]…
- ras
- Člen | 135
Jsem sice Nette zacatecnik, ale myslim, ze by bylo skvele a pro prehlednost super, kdyby misto nasledujiciho kodu
Honza Marek napsal(a):
Šablona:
stacilo uvest pouze
→ cimz by se tato „formSablona“ nacetla do soucasne sablony
Vyhody:
1.) moznost umistit formulare na jedno misto
2.) opakovane vyuzivat jednu sablonu pro vice formularu, resp. na vice strankach (snaha o DRY)
3.) citelnejsi kod sablony
Nebo si myslite, ze je to krok spatnym smerem?
- bojovyletoun
- Člen | 668
Dost promakané je to v Neuronu.
Formulář (mimo jiné features) získá automaticky šablonu ve tvaru
(BookingForm.php → BookingForm.phtml). V presenteru pak stačí vytvořit
createcomponentXyz(){new BlaForm;}
a vložit do šablony
klasicky {control Xyz}
Celkově se mi na tom líbí nápad, že formy samy o sobě jsou samostatné jednotky, kterým pohromadě řeknu jak mají vypadat, co mají dělat po odeslání atd. A takhle ho stačí jen prksnout do presenteru. A ještě lepší je EntityForm, který se rovnou sváže s modelem.
Editoval bojovyletoun (21. 4. 2011 22:05)
- neznalek
- Člen | 60
Snazil jsem se vypsat container, ale nedari se nevite kde by mohla byt chybka:
Presenter
View:
{form orderService}
<table class="settingTable">
{formContainer container}
<tr>
<td>{label i}</td>
<td>{input i}</td>
</tr>
{/formContainer}
</table>
{input submit}
{/form}
Hlasi to chybu: Component with name ‚i‘ does not exist.
Vysledek po uprave sablony by mel byt, data se bodou nacitat z tabulky toto
je priklad..
{nazev sluzby} | {cena} | {checkbox}
- Davelister
- Člen | 28
No, pokud vidim dobre, mas tam nejakou takovouto strukturu:
Form/container/c1/i
/c2/i
Tudiz v containeru „container“ zadne i neexistuje, to je az pod
c1(prip.c2).
Todle by uz mohlo fungovat:
Editoval Davelister (23. 4. 2011 1:36)
- neznalek
- Člen | 60
Me staci udelat pouze:
{nazev sluzby 1} | {cena 1} | {checkbox 1}
{nazev sluzby 2} | {cena 2} | {checkbox 2}
... | .. | ..
K tomu by mel stacit jeden konteiner, ale kdyz napisi:
Nazev container existuje.. Pocet sluzeb nevim budou se vyposivat z db..
Editoval neznalek (23. 4. 2011 1:49)
- Davelister
- Člen | 28
Nemuzes pridavat 2× container se stejnym nazvem. Tady mas nastin toho jak by se to dalo zhruba vyresit.
Udelej jeden container, do ktereho das vsechny sluzby a pak kazda sluzba bude ve specialnim containeru.
A do sablony:
Editoval Davelister (23. 4. 2011 2:12)