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
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
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)