Použití stejného formuláře ve více presenterech
- pernip01
- Člen | 21
Zdravím,
potřebuji použít formulář ve více presenterech a tak jsem šel tímto způsobem
.
Výsledkem je:
use Nette\Application\UI,
Nette\ComponentModel\IContainer;
class PouzFiltrForm extends UI\Form
{
private $db;
public function __construct(IContainer $parent = NULL, $name = NULL)
{
parent::__construct($parent, $name);
$this->setMethod('POST');
$this->addText('pole_1', 'Pole 1:', 10, 10);
$this->addText('Pole_2', 'Pole 2:', 10, 10);
$this->addSubmit('ShowResult', 'Vyber');
}
Protože však potřebuji formulář vypsat a vystylovat ručně, potřeboval bych vědět, jak daný formulář spojit s daným souborem .latte, která je vedle třídy v adresáři app/forms se stejným názvem, ve které budu mít formulář ručně vystylován, a jak se na tento formulář odkazovat v této šabloně.
Ještě mi není jasné, jak se v rámci tohoto formuláře dostat k databázi, kterou mám zaregistrovanou v config.neon, jako service.
- awsickness
- Člen | 98
udelej si komponentu kde si do construct predas vsechno copotrebujes idealni
uz vylsedek nejakeho db dotazu /pripadne db objekct a vyber potrebny vysledek/
v metode render jen pripoj template podle toho co potrebujes vykreslit a
hotovo.
tovarnu na komponentu napis do nejakeho shared presenteru a pak ji muzes volat
kdy potrebujes.
- pernip01
- Člen | 21
Ok, dobře, ale kde v komponentě mám vytvořit samotnou konstrukci toho formuláře. Dle mně mám tři možnosti:
- v funkci construct
- v funkci render
- vytvořit si samostatný formulář jako komponentu v daném presenteru a ten pak předat v konstruktorem komponentě ve které provedu její vystylování pomocí šablony.
nebo to jde nějak jednodušeji, lépe a čistěji?
díky
- ViPEr*CZ*
- Člen | 817
pernip01 napsal(a):
Ok, dobře, ale kde v komponentě mám vytvořit samotnou konstrukci toho formuláře. Dle mně mám tři možnosti:
- v funkci construct
- v funkci render
- vytvořit si samostatný formulář jako komponentu v daném presenteru a ten pak předat v konstruktorem komponentě ve které provedu její vystylování pomocí šablony.
nebo to jde nějak jednodušeji, lépe a čistěji?
díky
??? Podle návodu (examplu) si vytvořte komponentu. Samotné prvky formu pak můžete klidně iniciovat přes konstruktor komponenty. Ve funkci render komponenty jak jsme již zmiňovali nastavte šablonu ve které vykreslíte onen form jak potřebujete. A celou komponentu pak použijete v nějaké šabloně Presenteru.
Editoval ViPEr*CZ* (25. 3. 2012 16:51)
- awsickness
- Člen | 98
class Formular extends Control{
public class _construct($db,$param1,$param2){
parent::_construct()
.....
}
public function CreateComponentNazevFormulare(){
$form = new Form()
......
}
public function render(){
$template = $this->getTemplate();
/*zde se nasetuje pomoci nejakeho parametru latte*/
$template->render();
}
}
class BasePresenter extends Presenter{
public function CreateComponentFormular(){
return new Formular($db,$param1,$param2);
}
}
pak jen staci dat nekde v latte
{control 'formular'}
nebo
{control 'formular-nazevFormulare}'}
psal jsem to z patra ale nejak tak bych to delal ja osobne mam vsechno v configu a taham si je pak jednotlive.