Настройка 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'».
(Я также пытался зарегистрировать его как службу в соответствии с инструкциями, но это тоже не сработало. Я не сохранил информацию об ошибке, полученную в результате этой попытки, но я повторю шаги и опубликую ее, если кто-то так думает. было бы полезно)
Мне не помешала бы помощь, чтобы понять, где я ошибаюсь. Спасибо.