Nette 2.4 – snippet a formContainer
- kolsi
- Člen | 131
Ahoj,
chtěl bych poprosit o radu, jak správně přepsat následující kód do Nette 2.4. Jde o formContainer obsahující snippet. I v Nette 2.3 jsem to dělal takovou menší oklikou, ale apsoň to fungovalo :) nyní to nejde.
Kód je takto:
{snippet positionInfo}
...
{form editPositionForm}
...
<fieldset>
<legend>{_"Department roles"}</legend>
{formContainer roles}
{snippet roles}
{var $_form = $presenter['editPositionForm']}
<table>
<tr n:foreach="$_form['roles']->containers as $id => $role">
**<td width="40%">{input roles-$id-module_role}</td>**
<td width="60%">{input roles-$id-user_id}</td>
<td>{input roles-$id-remove}{input roles-$id-id}</td>
</tr>
</table>
{/snippet}
{input add}
{/formContainer}
</fieldset>
...
{/form}
...
{/snippet}
Jedná se o kontejnet obsahující dynamický počet položek (addDynamic), kde po stisku tlačítka „add“ dojde k přidání nové položky a následně překreslení snippetu „roles“.
Od Nette 2.4 to na zvýrazněném řádku (označil jsem **) hlásí „Component with name ‚24‘ does not exist.“ (24 odpovídá proměnné $id).
Jak kód přepsat, aby byl správně? Musí jít překreslovat jak vnitřní snippet „roles“, tak ten vnější „positionInfo“.
- Matey
- Člen | 142
Pravdepodobne by ti pomohlo niečo takéto:
{snippet positionInfo}
...
{snippetArea editPositionFormWrapper}
{form editPositionForm}
...
<fieldset>
<legend>{_"Department roles"}</legend>
{formContainer roles}
{snippet roles}
<table>
<tr n:foreach="$form['roles']->containers as $id => $role">
**<td width="40%">{input roles-$id-module_role}</td>**
<td width="60%">{input roles-$id-user_id}</td>
<td>{input roles-$id-remove}{input roles-$id-id}</td>
</tr>
</table>
{/snippet}
{input add}
{/formContainer}
</fieldset>
...
{/form}
{/snippetArea}
...
{/snippet}
- pridaná snippetArea, odstránené predávanie formu do $_form
a prekreslenie snippetu roles potom volať spolu so snippetAreou:
$this->redrawControl('editPositionFormWrapper');
$this->redrawControl('roles');
Niečo o snipetoch si môžeš pozrieť v tomto videu David Matějka – Snippety – proč a jak (ne)fungují