contributte / forms-multiplier

:repeat: Form multiplier & replicator for Nette Framework
https://contributte.org/packages/contributte/forms-multiplier.html
MIT License
26 stars 21 forks source link

Problém s přidáváním polí při AJAX redrawControl() #70

Open Foizo opened 3 years ago

Foizo commented 3 years ago

Ahoj, podařilo se mi rozjet překreslování části formu ajaxem, ale nikdy to nepřidá více jak jedno nové pole. Tzn. kliknu na button "Přidat obrázek" zobrazí se mi jedno pole pro upload, ale když kliknu znovu na ten button už se mi další pole nepřidá... nevíte někdo jak s tím naložit?

A druhá věc -> jakmile dám do parametru addCreateButton jiné číslo než 1 tak se nevykreslí vůbec nic.

componenta

$multiplier = $form->addMultiplier('article_images', function (Container $container, Form $form) {
            $container->addUpload('image', 'Obrázek k článku (600x400)')
                ->addRule(Form::IMAGE, 'admin.travel.category_form.wrong_image_format')
                ->setRequired(false);
        }, 0, 10);

$multiplier->addCreateButton('Přidat obrázek', 1, function () {
    $this->redrawControl('travelPageForm');
    $this->redrawControl('multiplier');
})->addClass('btn-sm btn-primary ajax');

$multiplier->addRemoveButton('Odebrat', function () {
    $this->redrawControl('travelPageForm');
    $this->redrawControl('multiplier');
})->addClass('btn-sm btn-danger ajax');

latte

{snippetArea travelPageForm}
{form travelPageForm}
.....
{snippet multiplier}
<div n:multiplier="article_images" class="form-group">
<label n:name="image"/>{btnRemove}
<input n:name="image" class="form-control">
</div>
{btnCreate article_images}
{/snippet}
.....
blondak commented 3 years ago

ono by to nově asi mělo být

$multiplier = $form->addMultiplier('article_images', function (Container $container, Form $form) {
    $container->addUpload('image', 'Obrázek k článku (600x400)')
        ->addRule(Form::IMAGE, 'admin.travel.category_form.wrong_image_format')
        ->setRequired(false);
    }, 0, 10
);

$multiplier->addCreateButton('Přidat obrázek')
    ->addClass('btn-sm btn-primary ajax')
;

$multiplier->addRemoveButton('Odebrat')
    ->addClass('btn-sm btn-danger ajax')
;

$multiplier->onCreate[] = $refresh = function () {
    $this->getParent()->redrawControl('travelPageForm');
    $this->getParent()->redrawControl('multiplier');
});

$multiplier->onRemove[] = $refresh;