Kdyby replikátor ve spolupráci s Form->addCondition(…)-toggle(…);
- Nax
- Člen | 35
Zdravím,
řeším teď problém kdy nevím jak vyřešit spolupráci kdyby replikátoru s podmíněnýma form controlama.
Konkrétně, mám ve formuláři smluvní strany, každá strana může mít
více subjektu, každý subjekt pak muže být fyzická osoba nebo firma.
Uživatel si muže ke smluvní straně pomocí kdyby replikátoru přidat kolik
subjektů chce. U každého subjektu je radiobutton jestli je subjekt firma
nebo člověk, když je zaškrtlá firma, pomocí
form->addCondition->toggle zobrazím 2 fieldy ič a dič.
Problém ale je, že na to abych zobrazil ty fieldy, je musím zabalit do divu a
tomu dát nějaké IDčko (nebo oidčkovat jednotlivé fieldy, to už je fuk).
To se ale špatně dělá s replikátorem, kde nevím jakým zpusobem bych to
mohl oIDčkovat.
Je na toto prosím nějaká řešení?
Díky moc.
- Nax
- Člen | 35
Zatím jsem to vyřešil tak že jsem si vytáhl počet komponent v replikovatelné komponentě, z toho si vytáhl IDčko současné komponenty a vytvořil IDčko elementu který obaluje podmíněné fieldy, ale nepřijde mi to jako moc elegantní řešení takže pokud někdo máte lepší, budu rád..
$form->addDynamic('contractors', function (Container $container) {
$containerId = count($container->getForm()->getComponent('contractors')->getComponents()) - 1;
$container->addRadioList('side_type', 'Typ smluvní strany', [
'p' =>'person',
'r' => 'company,'
])->setDefaultValue('p')
->addCondition(Nette\Application\UI\Form::EQUAL, 'p')
->toggle("company_fields_$containerId", false)
->addCondition(Nette\Application\UI\Form::EQUAL, 'r')
->toggle("company_fields_$containerId", true);
$container->addSubmit('remove', 'Remove')
->setValidationScope(FALSE) # disables validation
->onClick[] = [$this, 'MyFormRemoveElementClicked'];
}, 1);
- Matey
- Člen | 142
Ahoj, môžeš sa rovno spýtať na jeho meno
$container->getName()
.
$form->addDynamic('contractors', function (Container $container) {
$containerId = $container->getName();
$container->addRadioList('side_type', 'Typ smluvní strany', [
'p' =>'person',
'r' => 'company,'
])->setDefaultValue('p')
->addCondition(Nette\Application\UI\Form::EQUAL, 'p')
->toggle("company_fields_$containerId", false)
->addCondition(Nette\Application\UI\Form::EQUAL, 'r')
->toggle("company_fields_$containerId", true);
$container->addSubmit('remove', 'Remove')
->setValidationScope(FALSE) # disables validation
->onClick[] = [$this, 'MyFormRemoveElementClicked'];
}, 1);