【发布时间】:2017-08-22 18:20:34
【问题描述】:
简介
在我正在使用的个人项目中:
- XAMPP 与 PHP
v7.1.6 - Symfony
v3.3.6 - KnpMnenuBundle
dev-master / 2.2.x-dev[link 1], [link 2], [link 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 集成的情况下,我似乎无法弄清楚如何传递它们。
结论
请指教。
感谢您的时间和知识。
【问题讨论】:
标签: php twitter-bootstrap symfony knpmenubundle knpmenu