Как исключить определенную строку из списка отсутствующих переводов с помощью KnpMenuBundle и Symfony3

Введение

В моем личном проекте я использую:

  • XAMPP с PHP v7.1.6
  • Symfony v3.3.8
  • KnpMnenuBundle dev-master / 2.2.x-dev (версия dev так как совместима с текущей версией Symfony 3.3.x , более ранние версии не устанавливались с помощью composer .) [Ссылка 1] , [ссылка 2] , [ссылка 3] в порядке для управления меню.
  • Bootstrap v3.3.7
  • Интеграция Bootstrap и KnpMenuBundle [ссылка 4]

Настройка

Чтобы настроить, я использовал документацию в [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 ?

КОД: образец 1

образец моего MenuBuilder

 $profile->setChildrenAttribute("class", "dropdown-menu") ->addChild('Logged in as', array('label' => $getTranslatedLoggedInAs)) ->setExtra('divider_append', true) ->setExtra('translation_domain', false); 

КОД: образец 2

получение 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; } 

Вывод

Пожалуйста, порекомендуйте.

Спасибо за ваше время и знания.

Solutions Collecting From Web of "Как исключить определенную строку из списка отсутствующих переводов с помощью KnpMenuBundle и Symfony3"

Я предполагаю, что у вас есть ошибка в [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 %}