Komponent menu nechce získávat data z modelu

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

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
+
0
-

@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
+
0
-

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
+
0
-

Filip o tom píše tadyk, rozhodně si to naštuduj je to prima + se koukni na Kdyby\Events.