Vypsání kategorií z databáze pomocí komponenty
- Lebow
- Člen | 9
Ahojte,
snažím se vypsat jednotlivé kategorie uložené v DB, chtěl jsem to udělat
pomocí koponenty, ale za boha to nemůžu rozchodit :(
píše mně to chybu: Component with name ‚category‘ does not exist.
app\components\CategoryControl.latte
{foreach $categories as $category}
<li><a href="{$category->name}">{$category->name}</a></li>
{/foreach}
app\components\CategoryControl.php
<?php
use Nette\Application\UI;
class CategoryControl extends UI\Control {
private $database;
public function __construct(Nette\Database\Context $database) {
parent::__construct();
$this->database = $database;
}
public function render(){
$template = $this->template;
$template->setFile(__DIR__ . '/CategoryControl.latte');
$this->template->categories = $this->database->table('categories');
$template->render();
}
}
app\components\ICategoryFactory.php
<?php
namespace App\Components;
interface ICategoryFactory
{
/**
* @return \CategoryControl
*/
public function create();
}
app\presenters\CategoryPresenter.php
<?php
namespace App\Presenters;
class CategoryPresenter extends BasePresenter {
/** @var \App\Components\ICategoryFactory @inject */
public $categoryFactory;
protected function createComponentCategory()
{
return $this->$categoryFactory->create();
}
}
v config.neon v Services mám:
- App\Components\ICategoryFactory
a v @layout.latte mám:
{control category}
Neporadil by někdo? Zkoušel jsem to dělat dle dokumentace a fóra a stále se nedaří :(
Předem děkuji
- David Matějka
- Moderator | 6445
ahoj, vzhledem k tomu, ze to mas v @layout.latte
, tak to asi
chces vykreslovat na kazde strance. Takze to createComponentCategory musis
presunout do BasePresenteru. (a mas tam chybu –
$this->$categoryFactory
ma byt
jen $this->categoryFactory
- Lebow
- Člen | 9
super, funguje :) diky moc :) ještě jen nemůžu přijít na to, jak ze šablony odkazovat na nějaký jiný presenter :(
když šablona vypadá takto:
app\components\CategoryControl.latte
<li><a href="{link Article:category}">{$category->name}</a></li>
mně to hází tuto chybu: Component with name ‚Article‘ does not exist.
protože AriclePresenter je ve složce presenters, ale nepřišel jsem na to, jak to propojit :(
Neporadil by jsi prosím?
Děkuji