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
+
0
-

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

David Matějka
Moderator | 6445
+
+1
-

ahoj, komponenta musi dedit od Nette\Application\UI\Control

Aris
Člen | 48
+
0
-

Ďakujem za rýchlu radu :) Po oprave to ide ako má.