Komponent menu nechce získávat data z modelu
- Chuchy
- Člen | 77
Ahoj,
vím, že to je hloupý dotaz, ale já si nad tím lámu hlavu. Vytvořil jsem
si komponent
MenuModel.php
<?php
use Nette\Application\UI;
class Menu extends UI\Control {
public $menu;
public $defaultTemplateDir = '';
public function __construct(Nette\Database\Table\Selection $selected) {
parent::__construct();
$this->menu = $selected;
}
public function render() {
$template = $this->template;
$template->setFile(__DIR__ . '/Menu.latte');
$template->data = $this->menu;
$template->render();
}
}
A k němu bych chtěl připojit MenuModel.php, kde z abstraktní třídy Model.php dědím metody pro manipulaci s databází. A to menu bych chtěl vypsat přes abstraktní třídu BasePrezenter.php a v něm mám
public function createComponentMenu() {
$menu = new Menu($this->menuModel->findAll());
return $menu;
}
A vůbec netuším jak do něj ty data z toho modelu získat.
Editoval Chuchy (26. 11. 2013 12:43)
- Jan Suchánek
- Člen | 404
@Chuchy: Stačí, abys Model zaregistroval jako službu v config.neon a injektnul do BasePresenteru. Potom můžeš předat Selection i do koponenty, stejně jako nyní. Také mužeš k celému řešení využít továrničky z neonu, přez a Selection předat pomocí parametru.
Editoval jenicek (26. 11. 2013 14:07)
- Chuchy
- Člen | 77
Díky, neměl jsem ten model v BasePrezenter.php. A když bych to chtěl využít ty továrničky, kde najdu nějaký postup?
A ještě jeden dotaz, když vytvořím komponent a nechci mít šablonu uloženou ve složce s ním, ale někde jinde, je to dobré rozhodnutí nebo si tím zbytečně komplikuji celé vykreslení?
Editoval Chuchy (26. 11. 2013 16:20)
- Jan Suchánek
- Člen | 404
Filip o tom píše tadyk, rozhodně si to naštuduj je to prima + se koukni na Kdyby\Events.