Vlastní vykreslení formuláře vytvořeného replikátorem
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Cup
- Člen | 38
Ahoj, lehce se seznamuji s nette a už několik hodin se snažím vykreslit
si vlastní formulář který je sestavený pomocí
replikátoru.
Určitě to jde, ale já nevím zatím jak, chtěl bych si sám vypsat
formulář v latte. Ale nevím jak pod formulář přidat tlačítko na
přidání dalšího prvku. Jedná se konkrétně o toto
{form myForm}
{foreach $form['users']->containers as $user}
{$user['name']->control} {$user['name']->label}
{/foreach}
{/form}
tento kousek kódu mi vypíše ony tři záznamy pro vyplnění, jak to mám prosím v šabloně zapsat, aby se mi vykreslilo i tlačítko. addAjax. Vycházím přímo z příkladu který autor doplňku zveřejnil na gitu.
/**
* @return Form
*/
protected function createComponentWorkForm($name)
{
$form = new Form;
$presenter = $this;
$invalidateCallback = function () use ($presenter) {
/** @var \Nette\Application\UI\Presenter $presenter */
$presenter->invalidateControl('usersForm');
};
// jméno, továrnička, výchozí počet
$replicator = $form->addDynamic('users', function (Container $container) use ($invalidateCallback) {
//$container->currentGroup = $container->form->addGroup('člověsk', FALSE);
$container->addText('name', 'Jméno');
$container->addText('email', 'Email')->setRequired();
$container->addSubmit('remove', 'Smazat')
->addRemoveOnClick($invalidateCallback);
$container->addSubmit('removeAjax', 'Smazat Ajaxem')
->setAttribute('class', 'ajax')
->addRemoveOnClick($invalidateCallback);
}, 3);
/** @var \Kdyby\Replicator\Container $replicator */
$replicator->addSubmit('add', 'Přidat dalšího')
->addCreateOnClick($invalidateCallback);
$replicator->addSubmit('addAjax', 'Přidat dalšího Ajaxem')
->setAttribute('class', 'ajax')
->addCreateOnClick($invalidateCallback);
$form->addSubmit('send', 'Zpracovat')
->onClick[] = callback($this, 'WorkFormSubmitted');
$form->addSubmit('sendAjax', 'Zpracovat Ajaxem')
->setAttribute('class', 'ajax')
->onClick[] = callback($this, 'WorkFormSubmitted');
$this[$name] = $form;
$form->action .= '#snippet--usersForm';
return $form;
}
Editoval Cup (1. 6. 2013 23:00)