Kdyby\Replicator\Container s AJAXem

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

Ahoj,

rozhodl jsem se, že budu vytvářet formulář dynamicky, v podstatě z pole. Mám problém, že pokud kliknu na tlačítko přidat, tak mi Chrome vyhodí Error 500 (Internal Server Error). Co se týče odebírání, tak to jsem zatím neřešil, protože mi nejde přidávání :D. Dodávám PHP kód a Latte šablon, přes kterou vykresluji formulář. Nemůžete mi někdo prosím pomoci? Jsem už trochu zoufalý… Hlavní problém, který potřebuji vyřešit, je, že pokud přidám nový kontejner, tak se mi stránka načte znova s přidaným kontejerem, ale „odskočí“ nahoru. Potřebuji, aby zůstala tam, kde se nový kontejner vytvoří.

$dynamic = $form->addDynamic($name, function (\Nette\Forms\Container $bundle) use ($presenter) {
    // ... kód, který vytváří prvky v dynamickém kontejneru
    $bundle->addSubmit('remove', 'Odstranit')
        ->setValidationScope(FALSE)
        ->onClick[] = function (SubmitButton $button) use ($presenter) {
            $button->parent->parent->remove($button->parent, TRUE);
        };
    }, 0);

    $dynamic->addSubmit('add', 'Přidat')
        ->setAttribute('class', 'ajax')
        ->setValidationScope(FALSE)
        ->addCreateOnClick(
            function (SubmitButton $button) use ($presenter) {
                if ($presenter->isAjax())
                    $presenter->redrawControl('ajaxForm');
                }
            );
{form form}
    {snippetArea 'ajaxForm'}
        {foreach $_form->getComponents() as $component}
            {if $component instanceof \Kdyby\Replicator\Container}
                {snippet $component->name}
                {foreach $component->getContainers() as $container}
                    {foreach $container->getControls() as $control}
                        {include 'input.latte', c => $control}
                    {/foreach}
                {/foreach}
                {/snippet}
                {input $component['add']}<br>
            {else}
                {include 'input.latte', c => $component}
            {/if}
        {/foreach}
    {/snippetArea}
{/form}

Děkuji všem, kdo mi nějak pomůžou