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

Špatné vygenerování html id #33

Closed slischka closed 5 years ago

slischka commented 5 years ago

Kód:

$form->addMultiplier('a', function (Container $container): void {

    $b = $container->addSelect('b', null, [1 => '1', 2 => '2']);

    $c = $container->addSelect('c', null, [1 => '1']);

    $b->addCondition(Form::NOT_EQUAL, 1)
        ->toggle($c->getHtmlId());

}, 2);

Vygeneruje pro všechny inputy c stejný html id. Místo frm-form-a-0-c se vygeneruje frm-c pro všechny inputy. Zpsobí to, že pokud mám jeden ze selectu b mimo hodnotu 1 všechny inputy c se zobrazí.

Render:

<div n:multiplier="a">
    {input b}
    {input c}
</div>
MartkCz commented 5 years ago

getHtmlId nevrácí správnou hodnotu, protože ještě není připojený k presenteru

můžeš zkusit tohle:

$multiplier->onCreate[] = function (Container $container): void { // vrací již připojený FormContainer k presenteru
    $container['b']->addCondition(Form::NOT_EQUAL, 1)->toggle($container['b']->getHtmlId());
};