AppForm::setMethod

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

Ahoj,
mám problém s metodou setMehod u AppForm, vyhodí mi to hlášku:
Form::setMethod() must be called until the form is empty
Pokud použiji jen Form, vše funguje.
Používám Nette 0.9.3 stable, na fóru jsem hledal a dokonce našel ale hlasí že thread už je vypršený či co.
Díky za odpověd,
Frankie

Vyki
Člen | 388
+
0
-

Vloz sem tu metodu ve ktere to pouzivas

sitnarf
Člen | 27
+
0
-
	public function createComponentSearchProject($name){
		$form = new AppForm($this, $name);
		$form->setMethod('get');
		$form->setAction($this->link("Project:search"));
		$form->addText("keyword", 'Hledat:');
		FB::log($this->projectModel->getSelectPrizes());
		$form->addSelect('prize', "Cena",  $this->projectModel->getSelectPrizes());
		$form->addSubmit("search", "Hledat!");
		return $form;
	}
Ondřej Mirtes
Člen | 1536
+
0
-

Použij jen

$form = new AppForm;
redhead
Člen | 1313
+
0
-

v tom případě by to chtělo lepší chybovou hlášku, protože nad tímhle jsem taky dumal, proč to nejde..
(prázdný form je pro mě bez form. prvků)

Jinak v čem je problém to volat kdekoliv a kdykoliv před validací formuláře? Bylo by to rozhodně přívětivější..

Například v továrničce nemůžu uvést defaultní hodnoty jelikož zase bude řvát, že není připojen k presenteru (a změnit methodu nemůžu, nebo jo?)..[EDIT: blbost, jde to]

Editoval redhead (29. 1. 2010 20:19)

PetrP
Člen | 587
+
0
-

redhead napsal(a):

Jinak v čem je problém to volat kdekoliv a kdykoliv před validací formuláře? Bylo by to rozhodně přívětivější..

Protože na tom závisí odkuď se budou brát data ($_POST, $_GET), data se berou ve chvíli kdy form připojíš k presenteru, tedy v tu chvíli musí věďět odkuď je brát.

Například v továrničce nemůžu uvést defaultní hodnoty jelikož zase bude řvát, že není připojen k presenteru (a změnit methodu nemůžu, nebo jo?)..[EDIT: blbost, jde to]

Nově (0.9.2 nebo 3) jde nastavovat default ještě před připojenín na presenter.

Nebo můžeš připojit k presenteru jindy:

$form = new AppForm();
$form->setMethod('get');
$this['name'] = $form; // nebo $this->addComponent($form,'name');
...