Voláni modelu ve vlastní komponentě

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

Ahoj chtel jsem se optat kdyz si delam vlastni komponentu konkretne bych chtel si vytvorit tridu pro praci s menu (traverzovani kolem stromu), tak se chci optat jak implementuji novy model do nette sandboxu? Dělam to tak ze si vytvorim slozku modules/treemenu/menucontrol.php a chci neco jako menuModel.php ale jak tohle co nejelegantneji propojit?

Filip Procházka
Moderator | 4668
+
0
-

Přečteš si dokumentaci https://doc.nette.org/…introduction, a ještě tohle https://doc.nette.org/cs/configuring

Nastavíš

services:
	menuModel:
		class: MenuModel(@dbConnection)

factories:
	menu:
		class: MenuControl(@menuModel)

připojíš komponentu

protected function createComponentMenu()
{
	// sekce factories v konfigu ti vygeneruje metodu create<nazev>()
	// která vždy vrací novou instanci (nesdílená služba)
	return $this->getContext()->createMenu();
}

napíšeš si komponentu

class MenuControl extends Nette\Application\UI\Control
{
	private $model;

	public function __construct(MenuModel $model)
	{
		parent::__construct();
		$this->model = $model;
	}

	// ...
}

napíšeš si model

class MenuModel extends Nette\Object
{
	private $db;

	public function __construct(\DibiConnection $db)
	{
		parent::__construct();
		$this->db = $db;
	}

	// ...
}

A používáš :)