„Dynamicky“ pocet prvku ve formulari

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

Dobry den, uz par dnu se potykam s timto problemem:

Chci udelat editaci textu, ktere si nactu z databaze. Vytvorim si proto formular a v nem zjistim pocet polozek a v cyklu pridavam prvek textarea do formulare.

Tyto prvky bezproblemu vykreslim i s textem nactenym z databaze.

Ovsem kliknutim na tlacitko Ulozit zmeny tj. pri zpracovani tohoto pozadavku nejsou tyto prvky* dostupne (*ty ktere jsem v cyklu pridal do $form). V POSTu jsou ovsem viditelne.

Jak to delam:

<?php
protected function createComponentEditOPForm()
{
	$op = $this->context->createOp()->get($this->opid);
	$form = new Form();

	$form->addText('cislo_verze', 'Verze OP:', 20, 30)
		->addRule(Form::FILLED, 'Je nutné zadat verzi obchodních podmínek.');

	$form->addHidden('opid')->setDefaultValue($op->id);

	$form->setDefaults(array(
	  'cislo_verze' => $op->cislo_verze
	));

	$optexts = $this->context->createTextop()->where('id_op', $this->opid);
	$wrapper = $form->addContainer('textsop');

	$i = 0;
	foreach ($optexts as $optext) {
		$container = $wrapper->addContainer($i);
		$container->addTextArea('optext', ($i+1).'. odstavec:')->setDefaultValue($optext['text']);
		$container->addHidden('idtext')->setDefaultValue($optext['id']);
		$i++;
	}

	$form->addSubmit('ulozitZmeny', 'Uložit změny');

	$form->onSuccess[] = callback($this, 'ulozitZmenySubmitted');
	return $form;
	}
?>

Potom se pokousim o zpracovani:

<?php
public function ulozitZmenySubmitted(Form $form)
{
	$values = $form->getValues();

	//zde ve $values je kontejner 'textsop' prazdny.
	//.... atd.
}
?>

Umel by mi nekdo poradit? Kde delam chybu a co vsechno mam spatne?

Dekuji

Filip Procházka
Moderator | 4668
+
0
-

Vidím dva zásadní problémy

  1. snažíš se nějakou magii dělit text na odstavce – použij raději wysiwyg, nebo něco lepšího
  2. nepoužil jsi můj replicator
testerict
Člen | 3
+
0
-

Delit text na jednotlive odstavce je prani zakaznika.
Replicator jsem zatim jeste nevyzkousel, ale uz jsem si jej nainstaloval a jdu to zkusit.
Dam pak vedet jak to dopadlo. Prozatim dekuji za nasmerovani.

testerict
Člen | 3
+
0
-

Mohl bych poprosit o ukazku jak pouzit ten replicator. V mem pripade potrebuju pri vytvareni komponenty toho formulare tak dat x krat textarea spolu s text inputem (tak jak je to v prechozim kodu)?

Asi jsem trochu mimo, nevim jak to udelat. Diky

Editoval testerict (2. 10. 2012 16:22)

Filip Procházka
Moderator | 4668
+
0
-
$form->addDynamic('text', function ($container) {
	$container->addTextArea('paragraph', 'Odstavec');
});

Zbytek se pokus vyčíst z dokumentace, pokud se nebude dařit, klidně se ptej dál ;)