Kdyby/Replicator – Component already exists
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- n.u.r.v.
- Člen | 485
Ahoj, poprvé zkouším Kdyby/Replicator (nainstalovaný pomocí composeru do nette 2.2.7) ale jaksi mi nefunguje ani uvedený příklad https://componette.org/search/?…
Do BasePresenteru do metody startup jsem dal \Kdyby\Replicator\Container::register();
pak jsem si v presenteru vytvořil formulář (přesně dle příkladu z odkazu):
protected function createComponentAddProjectForm() {
$form = new Form();
$form->addDynamic('users', function (Container $user) {
$user->addText('name', 'Name');
$user->addText('surname', 'surbame');
$user->addDynamic('addresses', function (Container $address) {
$address->addText('street', 'Street');
$address->addText('city', 'City');
$address->addText('zip', 'Zip');
}, 1);
}, 2);
$removeEvent = callback($this, 'MyFormRemoveElementClicked');
$users = $form->addDynamic('users', function (Container $user) use ($removeEvent) {
$user->addSubmit('remove', 'Remove')
->setValidationScope(FALSE)
->onClick[] = $removeEvent;
}, 1);
$users->addSubmit('add', 'Add next person')
->setValidationScope(FALSE)
->onClick[] = callback($this, 'MyFormAddElementClicked');
$form->addSubmit('create_project', 'Vytvořit project');
$form->onSuccess[] = $this->addProjectFormSucceeded;
return $form;
}
latte (ale tam se ani nedostanu – chyba vzniká v kodu výše…):
{layout '../../../../templates/@layout.latte'}
{block content}
{form addProjectForm}
{if $form->hasErrors()}
<div n:foreach="$form->errors as $flash" class="alert alert-danger">
<button type="button" class="close" data-dismiss="alert">×</button>
{!$flash}
</div>
{/if}
{*{label NAME /}{input NAME}<br><br>*}
{foreach $form['users']->containers as $user}
{$user['name']->control} {$user['name']->label}
{/foreach}<br>
{input 'add'}<br><br>
{input 'remove'}<br><br>
{input 'create_project'}
{/form}
a dostanu tuto chybu:
Nette\InvalidStateException
Component with name ‚users‘ already exists.
Co dělám špatně? Díky.
- n.u.r.v.
- Člen | 485
Tak zatím jsem to vyřešil pomocí návodu zde: https://forum.nette.org/…ateone-error