add*() v šabloně neposílá data
- Etch
- Člen | 403
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
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
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
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)