Problém s factory pri vytváraní komponenty
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Aris
- Člen | 48
Zdravím, som začiatočník v Nette. Snažím sa o vytvorenie komponentu
menu vytváraného v base presenteri, aby sa zobrazil na každej
podstránke.
Študoval som fórum i manuály, no i tak si neviem dať rady s nasledujúcou
chybou.
Method App\Presenters\HomepagePresenter::createComponentMenu() did not return or
create the desired component.
(rovnaká chyba pri všetkých presenteroch)
Kód:
<?php
namespace App\Presenters;
use App\Components\MenuControl;
use Nette;
/**
* Base presenter for all application presenters.
*/
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
/**
* @var \IMenuControlFactory
*/
private $menuControlFactory;
public function __construct(\IMenuControlFactory $menuControlFactory)
{
$this->menuControlFactory = $menuControlFactory;
}
public function createComponentZobraz(){
$control = new \zobrazControl();
return $control;
}
protected function createComponentMenu()
{
return $this->menuControlFactory->create();
}
}
<?php
interface IMenuControlFactory
{
/**
* @return MenuControl
*/
public function create();
}
<?php
class MenuControl
{
/**
* @var \App\Model\MenuModel
*/
private $menuModel;
public function __construct(App\Model\MenuModel $menuModel)
{
$this->menuModel = $menuModel;
}
public function render()
{
echo "Menu Control Presenter";
}
}
v @layout.latte používam na výpis komponentu {control menu}
Ďakujem za rady :)