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
+
0
-
<?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
+
+1
-

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;