【问题标题】:Addidional menu item in Drupal 8Drupal 8 中的附加菜单项
【发布时间】:2015-11-23 13:07:05
【问题描述】:

我正在尝试为 Drupal 8 创建一个模块,但我不知道如何向菜单添加新项目。

在 Drupal 7 中,下面的代码就足够了:

function mymodule_menu()
{
$item['admin/settings/mymodule'] = array(
    'title' => 'MyModule',
    'description' => 'MyModule settings',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('mymodule_settings_form'),
    'access arguments' => array('administer mymodule'),
    'file' => 'mymodule.settings.inc',
    'type' => MENU_NORMAL_ITEM,
);

return $item;
}

新的菜单项应该出现在带有Content Structure 等的栏上。

在用 Symfony2 编写的新 Drupal 中,一切看起来都不同了,我花了几个小时但没有成功。

【问题讨论】:

    标签: php symfony drupal drupal-8


    【解决方案1】:

    必须将新菜单项放入模块文件夹中的<your_module_name>.links.menu.yml 文件中。例如,这里是文件system.links.menu.ymlContent菜单的定义:

    system.admin_content:
      title: Content
      description: 'Find and manage content.'
      route_name: system.admin_content
      parent: system.admin
      weight: -10
    

    在你的情况下,它会是这样的:

    mymodule.my_module_settings:
      title: MyModule
      description: 'MyModule settings'
      route_name: mymodule.settings
      parent: system.admin
      weight: -10
    

    (您应该将此代码放在新的 *.links.menu.yml 文件中,只需根据需要修改路由和其他参数即可。)

    route_name 路由必须在 *.routing.yml 文件中定义

    mymodule.settings:
      path: 'mymodule/form/'
      defaults:
        _title: 'Form title'
        _form: '\path\to\your\form'
      requirements:
        _permission: 'access content'
    

    【讨论】:

    • 像魅力一样工作,很好的答案。我只会补充一点,我们还需要清除缓存或(将其关闭)才能看到结果。
    • 如何添加多语言菜单项?可以从后端菜单项进行翻译。如何在 *.links.menu.yml 文件中做到这一点?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多