Nová form makra a snippety

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
22
Člen | 1478
+
0
-
{form search}
<table>
<tr>
	<td>{label typ/}</td>
	<td>{snippet test}{input typ}{/snippet}</td>
</tr>
</table>
{/form}

… skončí na Undefined variable: form

Editoval 22 (13. 9. 2011 10:27)

Ondřej Mirtes
Člen | 1536
+
0
-

To je očekávané chování. Snippet je „vytržen“ z okolního kódu.

Musíš dát do snippetu celý formulář nebo to řešit v JavaScriptu nějak ručně.

22
Člen | 1478
+
0
-

to je sice hezký, ale bez novýho makra při manual renderu to funguje:

{$form->render('begin')}
<table>
<tr>
        <td>{$form['typ']->label}</td>
        <td>{snippet test}{$form['typ']->control}{/snippet}</td>
</tr>
</table>
{$form->render('end')}

tak to jsou nová makra akorát na hrání potom, jinými slovy k ničemu…

Editoval 22 (13. 9. 2011 13:27)

Filip Procházka
Moderator | 4668
+
0
-

On bude taky problém trochu v tvém přístupu. Nevidím důvod proč bych měl posílat kus HTML, když můžu poslat data a element sestavit.

Buď bych posílal celý formulář, nebo jenom výčet prvků pro selectbox a jednotlivé optiony sestavil na straně klienta. Ušetříš tím svůj výkon i datový přenos, protože na poslání pole v JSONu nepotřebuješ šablony :)

Každopádně je nepříjemné, že to nefunguje.

//edit: Tvůj příklad, jestli se nepletu, počítá s tím že tam tu proměnnou předáš v render

public function renderDefault()
{
	$this->template->form = $this['search'];
}

Což by se ti mělo zavolat i pokud chceš jenom snippety. Takže tohle nesváděj na nová makra :)

Editoval HosipLan (13. 9. 2011 14:08)

22
Člen | 1478
+
0
-

no jo, v JSON by to mělo jít správně, se mi nechtělo psát 2 řádky v JS…