В моем личном проекте я использую:
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 %}