Настройка Symfony 6 KnpMenuBundle: как «создать новый класс в каталоге Menu одного из ваших пакетов»?

Я новичок в Symfony и пытаюсь следовать инструкциям на https://symfony.com/doc/current/KnpMenuBundle/index.html , чтобы настроить меню навигации «простым» способом. В нем говорится: «Сначала создайте новый класс в каталоге Menu одного из ваших пакетов». Я думал, что пакеты — это вещи, которые я устанавливаю с помощью composer. Я не знаю, есть ли у меня какие -то свои связки , как таковые. Далее в документации говорится, что пример класса построителя будет выглядеть так:

          // src/Menu/Builder.php [ <-- comment in the original ]

    namespace App\Menu;
    
    use Knp\Menu\FactoryInterface;
    use Knp\Menu\ItemInterface;
    // [etc]

    final class Builder
    {
       
        public function mainMenu(FactoryInterface $factory, array $options): ItemInterface
        {
            $menu = $factory->createItem('root');

            $menu->addChild('Home', ['route' => 'homepage']);
            // [etc]
        
            // create another menu item
            $menu->addChild('About Me', ['route' => 'about']);
            // you can also add sub levels to your menus as follows
            $menu['About Me']->addChild('Edit profile', ['route' => 'edit_profile']);

            // ... add more children

            return $menu;
        }
    }

так что я положил этот файл в src/Menu/Builder.phpи попробуйте отобразить его, как показано в документации, в моем шаблоне base.html.twig, сказав {{ knp_menu_render('App:Builder:mainMenu') }}. Результатом является RuntimeError:

Во время рендеринга шаблона возникло исключение ("Пакет "Приложение" не существует или не включен. Возможно, вы забыли добавить его в метод "registerBundles()" вашего файла "App\Kernel.php" ?").

Я совершенно уверен, что KnpMenuBundle зарегистрирован в моем config/bundles.php, но я не знаю, как решить приведенную выше ошибку о «Bundle 'App'».

(Я также пытался зарегистрировать его как службу в соответствии с инструкциями, но это тоже не сработало. Я не сохранил информацию об ошибке, полученную в результате этой попытки, но я повторю шаги и опубликую ее, если кто-то так думает. было бы полезно)

Мне не помешала бы помощь, чтобы понять, где я ошибаюсь. Спасибо.

0 ответов

Другие вопросы по тегам