Dynamická zmena formulárového prvku v Kdyby\Replicator
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- iNviNho
- Člen | 352
Ahojte,
snažím sa docieliť vo formulári toho, že po kliknutí na tlačítko sa zmení SelectBox na TextInput. Funguje to a aj by to fungovalo ak by to nebolo zanorené v Kdyby\Replicator a tu prichádza problém. Akonáhle kliknem, že chcem pridať nový container, formulár sa prekreslí a táto zmena je stratená.
Formulár:
<?php
$items = $form->addDynamic("items", function(Container $item) use($predefinedVat) {
// bla bla
$item->addSelect("unit", null, DefaultValues::getUnitTypes());
$item->addSubmit("change", "Change")
->setValidationScope(FALSE)
->onClick[] = [$this, "changeUnitToText"];
// bla bla
}, 1);
$items->addSubmit('add', 'Pridať')
->setValidationScope(FALSE)
->onClick[] = [$this, 'addComponent'];
/**
* Changes unit selectbox to input type box
* @param \Nette\Forms\Controls\SubmitButton $button
*/
public function changeUnitToText(SubmitButton $button) {
unset($button->getParent()["unit"]);
$button->getParent()->addText("unit");
}
?>
Čiže akonáhle kliknem na change, form sa prekreslí a zo selectu sa stáva textinput.
A ak potom kliknem na tlačítko add pre pridávanie nového kontaineru, tak selectbox je naspať a pridá sa nový riadok…
Ako teda by som docielil môjho požadovaného výsledku?:-\