Есть лучший способ сделать это. Что вы хотите сделать, это создать свой собственный плагин и расширить класс MenuLinkDefault. Лучшее место для поиска - модуль Drupal / User, который обеспечивает реализацию LoginLogoutMenuLink.
Вы можете определить свой собственный плагин, если хотите, например, изменить текст или логику. В качестве альтернативы, вы можете просто указать его на существующий плагин, чтобы сэкономить время и просто вставить существующий имплми. Вот пример кода:
Простая версия:
Продвинутая версия:
- Скопируйте плагин в вашу
my_module/src/Plugin/Menu/
папку
- Переименуйте его из LoginLogoutMenuLink в MyLoginLogoutMenuLink
- Обновите пространство имен, чтобы отразить ваше местоположение, например
namespace Drupal\my_module\Plugin\Menu;
- В файле изменить
class LoginLogoutMenuLink extends MenuLinkDefault
наclass MyLoginLogoutMenuLink extends MenuLinkDefault
- Создайте,
my_module.links.menu.yml
как указано выше, но убедитесь, что вы называете класс так, как вы его назвали, и указываете его на свой модуль. Смотрите пример ниже.
Вы my_module/src/Plugin/Menu/MyLoginLogoutMenuLink.php
должны выглядеть следующим образом:
namespace Drupal\my_module\Plugin\Menu;
use Drupal\Core\Menu\MenuLinkDefault;
use Drupal\Core\Menu\StaticMenuLinkOverridesInterface;
use Drupal\Core\Session\AccountInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* A menu link that shows "Log in" or "Log out" as appropriate.
*/
class MyLoginLogoutMenuLink extends MenuLinkDefault {
...
Вы my_module/my_module.links.menu.yml
должны выглядеть следующим образом:
my_module.logout:
weight: 10
menu_name: my-custom-menu
class: Drupal\my_module\Plugin\Menu\MyLoginLogoutMenuLink
Я надеюсь, что это помогает кому-то.