Predávanie parametra pri odosielaní formulára
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- mrk
- Člen | 8
<?php
$private zoradenie = "";
public function createComponentZoradHladaneForm() {
$form = new Nette\Application\UI\Form;
$form->addSubmit('zorad', 'Zoradiť');
$form->addHidden('zoradenie', $this->zoradenie);
dump($this->zoradenie);
$form->onSuccess[] = $this->zoradHladaneFormSucceeded;
return $form;
}
public function zoradHladaneFormSucceeded($form) {
$data = $form->getValues();
if ($data['zoradenie'] == "") {
$this->zoradenie = "ASC";
} elseif ($data['zoradenie'] == "ASC") {
$this->zoradenie = "DESC";
} else {
$this->zoradenie = "ASC";
}
}
?>
Prečo ten formular vždy dostane hodnotu "" v premennej $this->zoradenie? Pri opakovanom odosielaní ZoradHladaneForm?
Editoval mrk (6. 7. 2014 1:30)
- Jiří Nápravník
- Člen | 710
Nevim jestli uplne chapu. Ale chces docilit toho, ze kdyz nastavis po odeslani formulare $this->zoradenie, tak aby tam zustalo to, co jsi ulozil?
Tak takhle to nejde, protoze ty kdyz odesles formular, tak se prvne vytvori (tam je vzdy $this->zoradenie prazdne), pak provede tu akce po odeslani, ktera sice $this->nastavi, ale formular ma zase tu prazdnou hodnotu.
Pokud chces pamatovat tu hodnotu, tak mas v podstate dve reseni – SESSION (to si bude pamatovat i kdyz odejdes mimo tu stranku kde je formular), nebo udelat ten parameter public a persistentni tedy.
/**
* @persistent
*/
public $zoradenie;