Введение
В моем личном проекте я использую:
- XAMPP с PHP
v7.1.6
- Симфони
v3.3.6
- KnpMnenuBundle
dev-master / 2.2.x-dev
[ссылка 1], [ссылка 2], [ссылка 3] для управления меню. - Начальная загрузка
v3.3.7
- Интеграция Bootstrap и KnpMenuBundle [link 4]
Настройка
Для настройки я использовал документацию в [2], [3] и примеры кода [4]. Меню у меня работает, интеграция между Bootstrap
и KnpMenuBundle
тоже работает.
В данный момент
Пакет меню работает нормально, работает простой перевод и интеграция.
Мой пример кода ProfileMenu
:
public function profileMenu(array $options)
{
$menu = $this->factory->createItem('root');
$menu->setChildrenAttribute('class', 'nav navbar-nav navbar-right');
$menu->addChild('Profile', array('label' => 'menu.profile'))
->setExtras(array('dropdown' => true, 'icon' => 'fa fa-user'))
->setLinkAttribute('class', "dropdown-toggle")
->setLinkAttribute('data-toggle', "dropdown")
->setExtra('translation_domain', 'menu');
$menu['Profile']->setChildrenAttribute("class", "dropdown-menu")
->addChild('Logged in as', array('label' => 'layout.logged_in_as'))
->setExtra('divider_append', true)
->setExtra('translation_domain', 'FOSUserBundle');
$menu['Profile']->setChildrenAttribute("class", "dropdown-menu")
->addChild('My data', array('label' => 'menu.profile.myData', 'route' => 'fos_user_profile_show'))
->setExtra('translation_domain', 'menu');
$menu['Profile']->setChildrenAttribute("class", "dropdown-menu")
->addChild('Edit data', array('label' => 'menu.profile.editMyData', 'route' => 'fos_user_profile_edit'))
->setExtra('translation_domain', 'menu');
$menu['Profile']->setChildrenAttribute("class", "dropdown-menu")
->addChild('Change password', array('label' => 'menu.profile.changePassword', 'route' => 'fos_user_change_password'))
->setExtra('translation_domain', 'menu');
$menu['Profile']->setChildrenAttribute("class", "dropdown-menu")
->addChild('Exit', array('label' => 'menu.profile.logout', 'route' => 'fos_user_security_logout'))
->setExtra('divider_prepend', true)
->setExtra('translation_domain', 'menu');
return $menu;
}
рендеринг меню показан на следующем изображении
Вопрос
Как я могу передать параметры перевода (а именно %username%
) в меню (работает на KnpMenuBundle) и заставить его отображаться так, как задумано?
Как можно привести аргументы:
|trans({'%username%': app.user.username}
в MenuBuilder
?
МОЙ КОД
Рассматриваемый блок кода
$menu['Profile']->setChildrenAttribute("class", "dropdown-menu")
->addChild('Logged in as', array('label' => 'layout.logged_in_as'))
->setExtra('divider_append', true)
->setExtra('translation_domain', 'FOSUserBundle');
а именно label
строка
При обычном переводе строк с параметрами можно было бы указать такие аргументы:
<li><a href="#">{{ 'layout.logged_in_as'|trans({'%username%': app.user.username}, 'FOSUserBundle') }}</a></li>
Тем не менее, я не могу понять, как их передать в случае использования интеграции KnpMenuBundle
и Bootstrap
.
Вывод
Пожалуйста, порекомендуйте.
Спасибо за ваше время и знания.