Dynamicke generovani formulare

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
balicekt
Člen | 52
+
0
-

Ahoj, řeším problém s dynamickým generováním formuláře. Můj formulář vypadá takto:

//FORMULAR PRO REZERVACI
protected function createComponentReservationForm()
{
    $form = new UI\Form;

    $form->addText('name', 'Jméno');
    $form->addText('surname', 'Příjmení');

    $form->addText('street', 'Adresa');
    $form->addText('city', 'Město');
    $form->addText('zip', 'PSČ');
    $form->addText('country', 'Země');
    $form->addText('phone', 'Telefon');
    $form->addText('email', 'Email');
    $form->addTextArea('note', 'Poznámka');

    $form->addSubmit('save', 'Rezervovat')->setAttribute('class', 'btn btn-success');
    $form->onSuccess[] = array($this, 'reservationFormSucceeded');

    return $form;
}

A potřeboval bych aby bylo možné přidat více jmen a příjmení to znamená aby u jména a příjmení bylo ajaxové tlačítko +. Na které když zmačknu tak se přidají další dva inputy pro zadání dalšího jména a příjmení. Googlil jsem půl dne ale na nic co by aspoň trochu fungovalo jsem nepřišel. Budu opravdu vděčný za každou radu. Díky moc.

balicekt
Člen | 52
+
0
-

Super díky moc za pomoc. Povedlo se mi to po delší době rozběhat ale stále narážim na problém s přidáváním a odebíráním nových inputů. Můj formulář vypadá nyní takto:

protected function createComponentReservationForm()
{
    $form = new UI\Form;

    $users = $form->addDynamic('users', function (Container $user) {
        $user->addText('name', 'Jméno');
        $user->addText('surname', 'Příjmení');

        $user->addSubmit('remove', 'Odebrat')
            ->addRemoveOnClick();
    }, 1);

    $users->addSubmit('add', 'Přidat')
        ->addCreateOnClick();

    $form->addText('street', 'Adresa');
    $form->addText('city', 'Město');
    $form->addText('zip', 'PSČ');
    $form->addText('country', 'Země');
    $form->addText('phone', 'Telefon');
    $form->addText('email', 'Email');
    $form->addTextArea('note', 'Poznámka');


    $form->addSubmit('save', 'Rezervovat')->setAttribute('class', 'btn btn-success');
    $form->onSuccess[] = array($this, 'reservationFormSucceeded');

    return $form;
}

Narážím ale na 2 zásadní problémy a to, že uživatel může odebrat i ten první formulář, který tam je defaultně a to je špatně protože, alespoň jednou být vyplněn musí a druhý vetší problém je, že když dám přidat další formulář, tak se nějak zásadně odesílá a jde přidat až když je první formulář vyplněn. Našel jsem na fórech, že už to někdo řešil, ale rozchodit to tak aby to fungovalo se mi zatím nepodařilo. Díky moc za každou radu. TB

Grez
Člen | 7
+
0
-

Parametr $forceDefault nastav na true:

$users = $form->addDynamic('users', function (Container $user) {
    //dynamic form
}, 1, true);
Mysteria
Člen | 797
+
0
-

Přidávání dalších položek bez vyplnění předcházejících lze zařídit pomocí

->addCreateOnClick(TRUE);