Jak získat stejné položky z databáze ve více stránkách?

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

Zdravím,
jsem začátečníkem s Nette a rád bych se zeptal ohledně jednoho problému se kterým se teď potýkám.
Chtěl bych vytvořit vyjíždějící menu, které by zobrazovalo položky z databáze na všech stránkách. Z příspěvků, které jsem už projel, mi je jasné že se musí něco udělat v BasePresenteru a vytvořit nový model. Jen mi není jasné, jak to celé sepsat.

Něco jsem už zkoušel ale myslím si, že jdu na to celé špatně.

Menu.php

<?php

namespace App\Model;

use Nette,
	App\Model;

class Menu extends BaseModel
{

	public function getSubCat($CatId)
	{
		return $this->db
			->select("*")
			->from("category")
			->where("CatId = ?", $CatId)
			->fetchAll();
	}

}

BasePresenter.php

<?php

namespace App\Presenters;

use Nette,
	App\Model;

/**
 * Base presenter for all application presenters.
 */
abstract class BasePresenter extends Nette\Application\UI\Presenter
{

/**
* Other code
*/

	private $Menu;

    public function beforeRender()
    {
        $this->template->podKat = $this->Menu()->getSubCat();
    }

    public function injectMenu(Menu $Menu)
    {
        $this->Menu = $Menu;
    }

}

@layout.latte

<ul>
   <li n:foreach="$podKat as $kat">
	  <a n:href="Homepage:page $kat->id">{$kat->name}</a>
   </li>
</ul>

Budu vděčný za každou pomoc. :-)

Editoval tpmar (11. 2. 2015 19:15)

TheNEoo
Člen | 75
+
0
-

Ahoj,

  • Osobne bych volil cestu komponenty.
  • A pro presenter bych volil inject pomoci anotace
  • Model predat do komponenty pres konstruktor
  • Snad nerikam blbosti, dystak me nekdo opravi. :-)

Editoval TheNEoo (11. 2. 2015 19:43)

tpmar
Člen | 30
+
0
-

Už se mi to podařilo udělat. Stačilo jen poupravit pár věcí. :-)
Ale děkuji za snahu!