Dynamické přidávání skupiny formulářových polí

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

Přeji hezký den.
Mám takový problém s formulářem, který bych potřeboval nutně vyřešit a to co nejdříve.

Mám formulář, který slouží pro přihlášení organizace na seminář. Problém je v tom, že káždá organizace má jiný počet účastníků, které chtěji přihlásit.

Nyní je formulář řešen takto:

			$form = new AppForm($this, $name);
			$form->setMethod('post');
			$form->addText('organizace', 'Název organizace:')->addRule(Form::FILLED, 'Zadejte, prosím, název Vaší organizace');
			$form->addText('adresa', 'Adresa organizace:')->addRule(Form::FILLED, 'Zadejte, prosím, adresu Vaší organizace');
			$form->addText('ico', 'IČO organizace:')->addRule(Form::FILLED, 'Zadejte, prosím, IČO Vaší organizace');
			$form->addText('email', 'Váš e-mail:')->addRule(Form::EMAIL, 'Zadejte, prosím, Váš e-mail');
			//$form->addText('pocet', 'Kolik lidí přihlásit?:')->addRule(Form::NUMERIC, 'Počet přihlášených musí být číslo')->addRule(Form::RANGE, 'Počet přihlášených musí být číslo od %d do %d', array(1, 10));
			$form->addTextArea('jmena', 'Napište jména přihlašovaných !KAŽDÉHO UŽIVATELE MUSÍTE NA KONCI ZADANÝCH ÚDAJŮ ODDĚLIT ENTEREM!(ve tvaru: Titul.Jméno Příjmení(titul), Datum narození a místo)(např: Ing.Josef Fiktivní, 28.10.2010 v Táboře):')->addRule(Form::FILLED, 'Zadejte, prosím, nějaká jména');
			//$form->addCheckbox('jeclen', 'Jsme členy asociace');
			$clenstvi=Array (0=>'Nejsme členy asociace', 1=>'Jsme členy asociace');
			$form->addSelect ('jeclen', 'Členství v asociaci', $clenstvi);
			$form->addHidden('vzd_seminar')->setValue($this->template->seminar['id']);
			$form->addHidden('pocet');
			$form->addSubmit('prihlasit', 'Vypočítat cenu >>');
			$form->onSubmit[] = array($this, 'prihlasitFormSubmitted');
			$form->addProtection('Please submit this form again (security token has expired).');

A počet přihlášených získávám takto:

		  $hodnoty=$form->getValues();
		  $hodnoty['jmena']=trim($hodnoty['jmena']);
		  $pocetlidi=explode("\n", $hodnoty['jmena']);
$form['pocet']->setValue(count($pocetlidi));

Takže záznam v DB vypadá takto:

Titul1.Jméno1 Příjmení1(titul1), Datum narození a místo1
Titul2.Jméno2 Příjmení2(titul2), Datum narození a místo2
atd.

Já bych potřeboval, aby zápis do DB zůstal ve stejném tvaru, ale potřebuji změnit strukturu formuláře a to takto:

Nezměněné základní info.

Informace o organizaci:

  • Název organizace
  • Adresa organizace
  • IČ organizace
  • Email

Nyní přijde to co potřebuji. Část formuláře s informacemi o účastníkovi.

Informace o účastníkovi:

  • Titul před jménem
  • Jméno
  • Příjmení
  • Titul za jménem
  • Datum a místo narození

Za tímto by bylo tlačítko Přidat dalšího účastníka, které by vykreslilo novou část formuláře se stejnými poli.

Teď by to muselo podle toho kolik tam těch části Informace o účastníkovi bude vyvodit počet přihlášených účastníku.

Pokud by někdo věděl jak na to nebo měl nějaký nápad tak ho uvítám.

Mikulas Dite
Člen | 756
+
0
-

Každou opakovanou část můžeš hodit do containeru, tím se vyhneš stejným názvům a do db zapíšeš podle toho. Teoreticky něco jako tohle: https://forum.nette.org/…idani-vypisu?….