redrawControl na celý formulář a zároveň na jednotlivé prvky
- Jigs
- Člen | 14
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
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();