Kde plnit formuláře daty?
- Krab
- Člen | 10
Prosím vás kde mám populovat formulář daty? Četl jsem, že v továrničce je to blbě. Když to chci udělat v konstuktoru formuláře, tak to zase nevím, jak mám přistupovat k databázi, protože k ni se ve formuláři dostávám přes presenter a ten tam při běhu konstruktoru ještě nemám. Zkoušel jsem v action, jenže to je zase zřejmě pozdě, protože mi pak pořád selecty jako selected value vracely NULL, protože to ověřování, jestli se někdo nepokouší protlačit nějaký hodnoty, který tam nemaj co dělat, tam evidetně probíhá na formuláři ještě před akcí na presenteru, takže je to pozdě, protože pak select při ověřování nemá žádný defaultni hodnoty a validace vždycky selže.
- Robyer
- Člen | 74
Krab: Přečti si https://pla.nette.org/…nty-k-rodici. Ten formulář můžeš vytvářet tak, aby už v konstruktoru měl rodiče (tedy presenter).
Tedy:
protected function createComponentMyForm($name)
{
return new MyForm($this, $name);
}
Taky můžeš využít metodu attached() formuláře, která se zavolá při připojení presenteru – a v tu chvíli už budeš moct taky přistupovat k presenteru.
Nejspíš jsou ale oba tyto přístupy špatně a měl bys (dle DI) tomu formuláři přímo předat co potřebuje – tedy připojení k DB – v konstruktoru.
Tedy něco jako:
protected function createComponentMyForm()
{
return new MyForm($this->database);
}
Jen nevím co je ideální řešení :)