В моем личном проекте я использую:
v7.1.6
v3.3.8
dev-master / 2.2.x-dev
(версия dev
так как совместима с текущей версией Symfony 3.3.x
, более ранние версии не устанавливались с помощью composer
.) [Ссылка 1] , [ссылка 2] , [ссылка 3] в порядке для управления меню. v3.3.7
Чтобы настроить, я использовал документацию в [2], [3] и примеры кода [4]. Мое меню работает, также работает интеграция между Bootstrap
и KnpMenuBundle
.
Я использую Logged in as myTestUserName
в user profile
Logged in as myTestUserName
в части user profile
в меню. И я хотел бы исключить этот элемент из перевода, поскольку я получаю полную переведенную строку вручную (пример кода 1).
В настоящий момент даже при условии, что translation_domain
явно установлен на false
я получаю указанный пункт меню в отсутствующем разделе в разделе « Translation Messages
о Translation Messages
» в profiler
.
Каков правильный способ убедиться, что определенные переводы не включены в отсутствующий раздел в случае использования KnpMenuBundle
?
образец моего MenuBuilder
$profile->setChildrenAttribute("class", "dropdown-menu") ->addChild('Logged in as', array('label' => $getTranslatedLoggedInAs)) ->setExtra('divider_append', true) ->setExtra('translation_domain', false);
получение loggedInAs
переведенной строки в MenuBuilder
public function getTranslatedLoggedInAs() { $user = $this->tokenStorage->getToken()->getUser(); //dump($user); $translated_logged_in_as = ''; $anonymous_user = 'anon.'; if ($user->getUsername() !== $anonymous_user) { $translated_logged_in_as = $this->translator->trans( 'layout.logged_in_as', ['%username%' => $user->getUsername()], 'FOSUserBundle' ); } elseif ($user->getUsername() === $anonymous_user) { $translated_logged_in_as = $this->translator->trans( 'layout.logged_in_as', ['%username%' => $anonymous_user], 'FOSUserBundle' ); } return $translated_logged_in_as; }
Пожалуйста, порекомендуйте.
Спасибо за ваше время и знания.
Я предполагаю, что у вас есть ошибка в [link 4] в label
блока. translation_domain
не проверяется на false
а метка – каким-либо образом.
{% block label %}{{ item.label|trans( item.getExtra('translation_params', {}), item.getExtra('translation_domain') ) }}{% endblock %}
Посмотрите, как это работает в KnpMenuBundle
https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/views/menu.html.twig
{% block label %} {%- set translation_domain = item.extra('translation_domain', 'messages') -%} {%- set label = item.label -%} {%- if translation_domain is not same as(false) -%} {%- set label = label|trans(item.extra('translation_params', {}), translation_domain) -%} {%- endif -%} {%- if options.allow_safe_labels and item.extra('safe_label', false) %}{{ label|raw }}{% else %}{{ label }}{% endif -%} {% endblock %}