Autor Zpráva
Pavel Vanek
Profil *
Dobrý den,

rád bych se zeptal, kde mohu dělat chybu. S nette, začínám, mám továrničku, konkrétně menu. V MenuControl.php mám následující:

<?php

use Nette\Forms\Controls\BaseControl;


class MenuControl extends BaseControl
{
    public function render()
    {
        $this->template->render(__DIR__ . '/menu.latte');
    }

    public function createComponentMenu()
    {
        $menu = [
            'foo' => 'bar',
        ];
        return $menu;
    }

}

interface IMenuControlFactory
{
    /** @return MenuControl */
    function create();
}

v BasePresenter.php mám:
<?php
namespace App\Presenters;


use Nette\Application\UI\Presenter;


class BasePresenter extends Presenter
{
    /** @var \IMenuControlFactory @inject */
    public $menu;


    /**
     * @return mixed
     */
    public function createComponentMenu()
    {
        return $this->menu->create();
    }
}

a neonu:
services:
    router: App\RouterFactory::createRouter
    -  IMenuControlFactory

v @lazout.latte mám:
{control menu}

Přesto latte vypisuje "Component with name 'menu' does not exist".

Nevíte kde by mohla být chyba?
Kcko
Profil
A když zavoláš {control Menu} ?
Pavel Vanek
Profil *
To samé. Mám za to, že první písmeno musí být malé.
Kcko
Profil
Pavel Vanek:
Mě to funguje, akorát bys měl dědit od Nette\Application\UI\Control


A nastavení šablony máš blbě, má to být takto:

     $this->template->setFile(__DIR__ . '/menu.latte');
        $this->template->render();

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: