Formulář vykreslovaný po částech, pravidla
- Relapse
- Člen | 34
Dobrý den,
jaká pravidla musím dodržovat, když vykresluji formulář po kouskách ?
příklad:
{form orderForm}
<ul class="errors" n:if="$form->hasErrors()">
<li>{$form->errors[0]}</li>
</ul>
{/form}
NĚCO MEZI TÍM
{form orderForm}
<table>
<tr class="required">
<th><h3>Odběratel:</h3></th>
</tr>
<tr class="space">
<td></br></td>
</tr>
<tr class="required">
<th>{label name /}</th>
<td>{input name}</td>
</tr>
<tr class="required">
<th>{label address /}</th>
<td>{input address}</td>
</tr>
<tr class="required">
<th>{label city /}</th>
<td>{input city}</td>
</tr>
<tr class="required">
<th>{label country /}</th>
<td>{input country}</td>
</tr>
<tr class="required">
<th>{label ICO /}</th>
<td>{input ICO}</td>
</tr>
<tr class="required">
<th>{label DIC /}</th>
<td>{input DIC}</td>
</tr>
</table>
{/form}
NĚCO DALŠÍHO MEZI TÍM
Tady vykresluji formulář Kdyby\Replicator
{form orderForm}
<table>
{foreach $form['products']->containers as $id => $product}
<tr class="required">
<th>{label products-$id-product /}</th>
<td>{input products-$id-product}</td>
</tr>
<tr class="required">
<th>{label products-$id-quantity /}</th>
<td>{input products-$id-quantity}</td>
</tr>
<tr class="required">
<th>{label products-$id-price /}</th>
<td>{input products-$id-price}</td>
</tr>
<tr class="required">
<th></th>
<td>{input products-$id-remove}</td>
</tr>
<tr class="space">
<th></th>
<td><hr></td>
</tr>
{/foreach}
<tr class="required">
<th></th>
<td>{input products-add}</td>
</tr>
<tr class="space">
<td></br></td>
</tr>
<tr class="required">
<th></th>
<td id="send">{input send}</td>
</tr>
</table>
{/form}
Když se pokusím takový formulář odeslat, tak mi vypíše chybu, že vstupní pole „name“ (hned to první) je povinné. Mám ho nastavené jako povinné, ale tato chyba se vypisuje i když je formulář vyplněn správně.
Pokud formulář vykreslím najednou, tak není problém.
Děkuji za rady.
- David Matějka
- Moderator | 6445
Takhle po kouskach ho vykreslovat nemuzes, se to vykresli jako nekolik formularu…
Editoval matej21 (21. 11. 2014 13:27)
- Relapse
- Člen | 34
Ptám se hlavně kvůli možnosti překreslování části formuláře pomocí ajaxu. Proto potřebuju vykreslit tu část formuláře, kterou budu překreslovat zvlášť, abych ji mohl obalit do {snippet}
Pokud vykreslím formulář najednou a tu danou část obalím do {snippet}, tak dostávám chybu: Undefined variable: _form
příklad:
{form orderForm}
<table>
<tr class="required">
<th><h3>Odběratel:</h3></th>
</tr>
<tr class="space">
<td></br></td>
</tr>
<tr class="required">
<th>{label name /}</th>
<td>{input name}</td>
</tr>
{snippet}
<tr class="required">
<th>{label address /}</th>
<td>{input address}</td>
</tr>
<tr class="required">
<th>{label city /}</th>
<td>{input city}</td>
</tr>
<tr class="required">
<th>{label country /}</th>
<td>{input country}</td>
</tr>
{/snippet}
<tr class="required">
<th>{label ICO /}</th>
<td>{input ICO}</td>
</tr>
<tr class="required">
<th>{label DIC /}</th>
<td>{input DIC}</td>
</tr>
</table>
{/form}
- David Matějka
- Moderator | 6445
Jo, to je znama limitace snippetu…, necha se to vyresit takhle:
{snippet nazevSnippetu}
{var $_form = $control['orderForm']}
...
a jeste par poznamek:
- snippety pojmenovavej, nepojmenovane snippety maji vyznam pouze pokud je treba jen jeden v komponente.
- s tabulkou tam bude problem, snippet vytvari div tag, ktery by tu tabulku
rozhodil. necha se pouzit
n:
makro, ale budes muset pouzit dva snippety, tedy
<tr n:snippet="city">
{var $_form = ...}
...
</tr>
<tr n:snippet="country">
{var $_form = ...}
...
</tr>
- Relapse
- Člen | 34
matej21 napsal(a):
Jo, to je znama limitace snippetu…, necha se to vyresit takhle:
{snippet nazevSnippetu} {var $_form = $control['orderForm']} ...
a jeste par poznamek:
- snippety pojmenovavej, nepojmenovane snippety maji vyznam pouze pokud je treba jen jeden v komponente.
- s tabulkou tam bude problem, snippet vytvari div tag, ktery by tu tabulku rozhodil. necha se pouzit
n:
makro, ale budes muset pouzit dva snippety, tedy<tr n:snippet="city"> {var $_form = ...} ... </tr> <tr n:snippet="country"> {var $_form = ...} ... </tr>
Moc děkuji za pomoc.