Předání hodnoty z URL a její použití v obou částech generování formuláře

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

Je to dost začátečnický problém. Mám hodnotu, která je jako parametr v URL a při prvním generování formuláře si ji uložím do hidden. Při odeslání formuláře se již tento hidden nevytvoří, protože již nemám tu proměnnou v URL a tím pádem se mi ani nezobrazí v poli odeslaných dat.
Nevíte co s tím?

if($this->getParam('poprve') == 'ano'){
	$form->addHidden('poprve',$this->getParam('poprve'));
}
Filip Procházka
Moderator | 4668
+
0
-

Co takhle ten hidden vytvořit vždycky, ale dát mu hodnotu, jenom když je ten parametr v url?

public function actionDefault($poprve = NULL) // fakt se to tam automaticky dosadí
{
	if ($poprve !== NULL) {
		$this['jmenoFormulare']['poprve']->setDefaultValue($poprve);
	}
}

public function createComponentJmenoFormulare($name)
{
	$form = new AppForm($this, $name);

	// ...
	$form->addHidden('poprve');

	//...
}
Ladis-s
Člen | 53
+
0
-

wow, to je magie :D
Moc to sice nechápu, ale funguje to.
Můžeš mi ještě prosím popsat pro pochopení, jak se ten parametr dostane do formuláře i při druhém renderování?
Díky

Filip Procházka
Moderator | 4668
+
0
-

První požadavek

  • zavolá se akce, té se magicky předají parametry z query, o které si řekne (pomocí parametrů)
  • protože se zatím jenom renderuje, tak metoda setDefaultValue nastaví výchozí hodnotu
  • formulář vyplníš a odešleš

Druhý požadavek

  • v url už není parametr, takže se nepokouší ho nastavit (ani by ho nenastavil, protože setDefaultValue)
  • formulář příjme v requestu POST data a zpracuje
  • zavolá tvoje události
jtousek
Člen | 951
+
0
-

Nebylo by lepší použít podmínku if ($form->isSubmitted())?

Filip Procházka
Moderator | 4668
+
0
-

Proč používat podmínku, která je v setDefaultValue?