Formulář v panelu – mimo Presenter

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

Ahoj,
chtěl bych do panelu vložit formulář pomocí továrničky. Místo od \Nette\Object jsem tedy dědil od \Nette\Application\Control. Formulář se vykreslí v pořádku, ale handler/onSubmit nefungují (nezavolají se). Kromě toho, form má id frm-, což znamená, že nedostal jméno (?).

Továrnička http://pastebin.com/zJB88zx8.

Stačilo by nějak zaregistroval Control do aplikace? U presenterů se to děje automaticky, ale předpokládám, že tady bude potřeba určit rodiče ve stromu manuálně.

Aurielle
Člen | 1281
+
0
-

No formulář nedostal jméno protože jsi ho nepojmenoval… (máš jen new AppForm)
A s ostatním ti neporadím, do tajů komponent budu pronikat až zanedlouho…

Mikulas Dite
Člen | 756
+
0
-

Diky, každopádně když v továrničce formulář vracím, tak by se měla zaregistrovat v pořádku. Zkoušel jsem ale i variantu s

createComponentForm($name)
{
	$form = new AppForm($this, $name);
	return $form;
}

Ani jedno formulář nepojmenuje – chybu mám někde jinde.

Editoval Mikulas Dite (31. 10. 2010 10:32)

Mikulas Dite
Člen | 756
+
0
-

Aha, už jsem na to přišel. Stačí zaregistrovat panel (potažmo Control) do aplikace.

public function __construct()
{
	parent::__construct(\Nette\Environment::getApplication()->presenter, $this->reflection->shortName);
}

Editoval Mikulas Dite (31. 10. 2010 10:51)