Formulář vykreslovaný po částech, pravidla

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Relapse
Člen | 34
+
0
-

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
+
0
-

Takhle po kouskach ho vykreslovat nemuzes, se to vykresli jako nekolik formularu…

Editoval matej21 (21. 11. 2014 13:27)

Relapse
Člen | 34
+
0
-

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
+
+1
-

Jo, to je znama limitace snippetu…, necha se to vyresit takhle:

{snippet nazevSnippetu}
{var $_form = $control['orderForm']}
...

a jeste par poznamek:

  1. snippety pojmenovavej, nepojmenovane snippety maji vyznam pouze pokud je treba jen jeden v komponente.
  2. 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
+
0
-

matej21 napsal(a):

Jo, to je znama limitace snippetu…, necha se to vyresit takhle:

{snippet nazevSnippetu}
{var $_form = $control['orderForm']}
...

a jeste par poznamek:

  1. snippety pojmenovavej, nepojmenovane snippety maji vyznam pouze pokud je treba jen jeden v komponente.
  2. 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.