Drupal 8 中的附加菜单项

Addidional menu item in Drupal 8

我正在尝试为 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 中,一切看起来都不一样,我花了几个小时但没有成功。

新菜单项必须放入模块文件夹中的 <your_module_name>.links.menu.yml 文件中。作为示例,这里是文件 system.links.menu.yml:

Content 菜单的定义
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文件中,只需根据您的需要修改路由和其他参数即可。)

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

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