Nette\InvalidArgumentException Component with name ‚Homepage‘ does not exist
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- ondraondra81
- Člen | 82
Ahoj,
můžete mě prosím někdo říct kde je chyba. Tracy tentokráte není moc
výmluvná a fakt už nevím kde hledat.
Pokouším se vytvořit komponentu na zobrazení menu z databáze.
MenuFactory.php
namespace App\Components\UI;
use \App\Model\MenuRepository;
use \Nette\Application\UI\Control;
class MenuFactory extends Control
{
/** @var \App\Model\MenuRepository */
private $menuRepo;
/** @var string */
private $menuTemplate;
/**
* @param \App\Model\MenuRepository $menuRepo
*/
function __construct(MenuRepository $menuRepo)
{
parent::__construct();
$this->menuRepo = $menuRepo;
$this->menuTemplate = __DIR__ . '/menu.latte';
}
public function render()
{
$this->template->setFile($this->getMenuTemplate());
$this->template->menuGroup = $this->menuRepo->getMenuGroup();
$this->template->render();
}
private function getMenuTemplate()
{
return $this->menuTemplate;
}
}
IMenuFactory.php
namespace App\Components\UI;
interface IMenuFactory
{
/**
* @return \App\Components\UI\MenuFactory
*/
public function create();
}
v BasePresentru
/**
* @inject
* @var \App\Components\UI\IMenuFactory
*/
public $menuFactory;
/**
* @return MenuFactory
*/
public function createComponentMenu()
{
return $this->menuFactory->create();
}
v config.neon
services:
- App\Components\UI\IMenuFactory
v @layout.latte pak
{control menu}
Výsledkem po spuštění je chyba Nette\InvalidArgumentException Component with name ‚Homepage‘ does not exist
- David Matějka
- Moderator | 6445
za prve, class MenuFactory extends Control
– ta trida by se
nemela jmenovat MenuFactory, ale treba MenuControl nebo proste jen Menu
a k chybe – ukaz sablonu komponenty. Pravdepodobne tam vytvaris link
pomoci makra n:href
, resp. {link}
, musis pouzit
{plink}
:
<a href="{plink Homepage:default ......}">