ajax, překreslit jen část formuláře

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

Dobrý den,

je možné pomocí {snippet} ajax překreslit jen část formuláře?
Chci po kliknutí na odkaz nastavit některé hodnoty formuláře.

Mám něco takového:

public function handleNewOrder($id)
    {


	/* Doplnim udaje odberatele do formulare */
	if ($id)
	{
	    $sb = $this->DBsubscribers->findOneBy(array('id' => $id));
	    $this['orderForm']->setDefaults(array(
		'name' => $sb->name,
		'address' => $sb->address,
		'city' => $sb->city,
		'country' => $sb->country,
		'ICO' => $sb->ICO,
		'DIC' => $sb->DIC
	    ));
	}

	$this->redrawControl('sub'); //překreslíme komponentu
    }

Ale nevím kam v šabloně, kde vykresluji formulář, umístit značky {snippet} {/snippet}, aby se mi překreslila jen ta část formuláře, kterou potřebuji (prvních pět inputů).
Když ty značky{snippet} {/snippet} umístím natvrdo dovnitř toho formuláře, tak dostunu chybu: Undefined variable: _form

{form orderForm}
                <ul class="errors" n:if="$form->hasErrors()">
                    <li>{$form->errors[0]}</li>
                </ul>

                <table id="tableLeft">
                    <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>
                    <tr class="space">
                        <td></br></td>
                    </tr>
                    <tr class="required">
                        <th><h3>Objednávka:</h3></th>
                    </tr>
                    <tr class="space">
                        <td></br></td>
                    </tr>

                    <tr class="required">
                        <th>{label number /}</th>
                        <td>{input number}</td>
                    </tr>
                    <tr class="required">
                        <th>{label date /}</th>
                        <td>{input date}</td>
                    </tr>
                    <tr class="required">
                        <th>{label dueDate /}</th>
                        <td>{input dueDate}</td>
                    </tr>
                    <tr class="required">
                        <th>{label dateUZP /}</th>
                        <td>{input dateUZP}</td>
                    </tr>
                    <tr class="required">
                        <th>{label formPayment /}</th>
                        <td>{input formPayment}</td>
                    </tr>
                    <tr class="space">
                        <td></br></td>
                    </tr>

                </table>
			{/form}

Děkuji za pomoc.

Mysteria
Člen | 797
+
0
-

Osobně to dělám jak píšeš ty a tu chybu vyřeším přidáním tohohle na začátek toho snippetu, ale netuším, jak moc pěkné / čisté řešení to je.

{var $_form = $form = $control['myForm']}
pawouk
Člen | 172
+
0
-

S čistotou bych si tady hlavu nelámal, ono to v současnosti ani jinak nejde, když chceš použít snippety. Proto bych na to asi snippety nepoužíval a naspal bych si to v js + payload. Ale to je věc názoru samozřejmě.