Replicator – přidání existujících položek
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- chikeet
- Člen | 160
Zdravím,
mám takový drobný problém s Replicatorem. Je to celkem jednoduchá věc,
ale prostě nevím, jak na to. Když zobrazím třeba formulář na editaci
uživatele, který má mít dejme tomu 5 existujících emailových adres
s možností přidání dalších, zobrazí se mi jen tlačítko Přidat email.
Existující adresy ne. Je to tím, že sice ve vytvoření formuláře
createComponentUserForm vytvořím dynamickou položku formuláře
$emails = $form->addDynamic('emails', function (Container $email) use ($presenter) {
$email->addText('addres', 'Email:', 30, 30);
$email->addHidden('id', 0);
$email->addSubmit('remove', 'Smazat email')
->addRemoveOnClick(callback($presenter, 'DeleteEmail'));
});
$videos->addSubmit('add_video', 'Přidat email')
->addCreateOnClick(TRUE, function (Kdyby\Replicator\Container $replicator, Container $email) { });
v akci actionEdit naplním existující položky formuláře daty
$form = $this['userForm'];
if (!$form->isSubmitted()) {
$emails = $emailData->fetchAll();
foreach ($emails as $email) {
$form['emails'][$email->id]->setValues(array(
'address' => $email->address,
'id' => $email->id,
));
}
a v šabloně vykreslím
{foreach $form['emails']->containers as $id => $email}
{label emails-$id-address/} {input emails-$id-address}
{input emails-$id-id} {input emails-$id-remove}
{/foreach}
ale nikde nemám nic jako foreach($emails as $email){ //pridej dynamickou polozku formulare }, a nikde jsem nenašla, jak tohle udělat. Přijde mi to hloupé, ptát se na tak jednoduchou věc, ale fakt nevím, jak to napsat.