redrawControl na celý formulář a zároveň na jednotlivé prvky

Jigs
Člen | 14
+
0
-

Zdravím,

chtěl jsem vylepšit zpracování formulářů tak, aby se nepřekreslovala celá stránka, ale pouze daný formulář. Především z toho důvodu, aby bylo možné si ověřit, že data v aplikaci sedí s tím, co naklikal uživatel. Dostal jsem se tedy k takovému kódu:

{snippet editForm}
	{form editForm}
		...
	{/form}
{/snippet}

Nicméně občas je potřeba při vyplnění nějakých dat aktualizovat některé části formuláře. Nicméně snippet ve snippetu nefunguje moc dobře, takže prvek nelze invalidovat bez invalidování celého formu, např:

{snippet editForm}
	{form editForm}
		{snippet field}
			{input field}
		{/snippet}
	{/form}
{/snippet}

Aby mi fungoval druhý případ, tak musím form obalit pomocí snippetArea místo snippet. Nicméně pak bych zase nemohl použít první případ.

Co s tím?

Jigs
Člen | 14
+
0
-

Při psaní této otázky jsem si asi odpověděl sám. Nicméně jsem to i tak odeslal, aby to tu bylo, kdyby někdo měl podobný problém. Možná ale existuje lepší řešení.

Je možné celý formulář obalit pomocí snippetArea, celé to vložit do komponenty a v případě potřeby překreslit celou komponentu, místo samotného formuláře.

Ukázková šablona komponenty:

<div class="container" id="flash-container">
	{snippet flashes}
		<div n:foreach="$flashes as $flash" class="flash {$flash->type}">{_}{$flash->message}{/_}</div>
	{/snippet}
</div>

{snippetArea editForm}
	{form editForm}
        {snippet field}
            {input field}
        {/snippet}
    {/form}
{/snippetArea}

V případě potřeby překreslení celého formuláře v komponentě zavolat

$this->redrawControl();
MajklNajt
Člen | 502
+
+1
-

obal to do snippetArea

{snippetArea editForm}
    {form editForm}
        {snippet field}
            {input field}
        {/snippet}
    {/form}
{/snippet}