add*() v šabloně neposílá data

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

Mám drobný problém s formulářem pokud jeho určité části potřebuji nastavit až v šabloně. Jednoduchý příklad :

TestPresenter :

<?php
class TestPresenter extends Presenter{

	public function actionDefault(){
		$form = new AppForm($this, 'form');
		$form->addSubmit('send', 'Send');
		$form->onSubmit[] = array($this, 'sendSubmit');
		$this->template->form = $form;
	}

	public function sendSubmit($sender){
		debug::dump($sender->getValues());
	}
}
?>

Test Šablona :

<?php
$form->addText('text', 'Text :');
echo $form;
?>

Pokud se v tomto případě klikne na tlačítko send tak $sender->getValues() vrátí pouze prázdné pole. Vím, že toto není úplně čistý způsob jak řešit formulář jenže mě nějak nenapadá jak to řešit elegantně.

V podstatě jde o problém že na stránce bude ± 80 formulářů které budou „úplně stejné“ a jediné co bude u každého jiné je hidden pole a možnosti SelectBoxu. A s tím selectboxem je právě problém on se sice zobrazuje správně, ale jeho hodnota už se neodešle. Nevíte někdo jak toto elegantně vyřešit? Předem děkuji.

Etch
Člen | 403
+
0
-

Jinak samozdřejmě variantu vytvoření kompletních formulářů už na úrovni presenteru např něco jako :

<?php
	foreach($data AS $val){
		$array = explode(';', $val['data']);
		$form = new AppForm($this, 'f'.$val['id']);
		$form->addHidden('id')->setValue($val['id']);
		$form->addSelect('select','select', $array);
		$form->addSubmit('send', 'send');
		$form->onSubmit[] = array($this ,'sendSubmit');
		$data[$key]['form'] = $form;
	}
	$this->template->data = $data;
?>

sem také zkoušel, ale ta mi také nepřijde zrovna ideální.

phx
Člen | 651
+
0
-

Problem vidim pri zpracovani dat. Form si overuji co posilas a zda neposilas neco co neni ve form definovano. Takze kdyz polozku doplnis v sablone tak v momente zpracovani (pred vykreslenim sablony) Forms danou polozku neznaji. Tudiz ji ignoruji.

Nejake elegantni reseni me nenapada:(

Jod
Člen | 701
+
0
-

Môžeš si to vytiahnúť cez httpRequest post, alebo to proste nepchať do šablony. Celkovo neni dobré pchať logiku do prezentačnej vrstvy ani nevidím dôvod prečo to tam dávať. Mne príde to vytváranie formulárov v presenteru v pohode, všetci to tak robíme :D

Ešte by sa tam dalo aplikovať podobné riešenie ako tu https://forum.nette.org/…iewtopic.php?…, len to je ako chytať sa za riť cez hlavu )))

Editoval Jod (10. 12. 2008 10:10)