Dynamické přidávání prvku formuláře přes js
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Petr Parolek
- Člen | 455
Ahoj, jak mám přidat přes JS další položku v formuláři prosím? Laboruju s kdyby replicator a nedaří se mi.
$photos = $form->addDynamic('photos', function (\Nette\Forms\Container $photo) use ($form) {
$photo->addText("photo","obrazek");
},3);
$photos->addSubmit('add', 'Pridat')
->setAttribute('class', 'ui primary button')
->setValidationScope(false)
->addCreateOnClick(true);
$form->addSubmit("ok","OK");
Latte:
{control xxxForm}
Co mám mít v js, aby se po kliknutí na přidat přidal input? Teď se mi
na tvrdo přidávají 2 další inputy, jak to udělat dynamicky?
Díky za rady.
Editoval ppar (8. 11. 2016 21:01)
- Petr Parolek
- Člen | 455
Vyřešeno
public function createComponentPhotogallerySettingsForm()
{
$form = new Form;
$removeEvent = [$this, 'photoFormRemoveElementClicked'];
$photos = $form->addDynamic('users', function (Container $photo) use ($removeEvent) {
$photo->addText('date','Datum:');
$photo->addSubmit('remove', 'Remove')
->setValidationScope(FALSE) # disables validation
->addRemoveOnClick();
}, 1);
$photos->addSubmit('add', 'Pridat')
->setAttribute('class', 'ui primary button')
->setValidationScope(false)
->addCreateOnClick(TRUE);
$form->addSubmit('send', 'Odeslat');
$form->onSuccess[] = array($this, 'photogallerySettingsFormSucceeded');
return $form;
}
public function photogallerySettingsFormSucceeded(Form $form, $values)
{
\Tracy\Debugger::barDump($values);
}
public function photoFormAddElementClicked(SubmitButton $button)
{
$users = $button->parent;
// count how many containers were filled
if ($users->isAllFilled()) {
// add one container to replicator
$button->parent->createOne();
}
}
public function photoFormRemoveElementClicked(SubmitButton $button)
{
// first parent is container
// second parent is it's replicator
$users = $button->parent->parent;
$users->remove($button->parent, TRUE);
}