Я пытаюсь создать модуль для 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
и т.п.
В новом Drupal, написанном на Symfony2, все выглядит иначе, и я потратил часы, но безуспешно.
Новый пункт меню должен быть введен в <your_module_name>.links.menu.yml
файл в папке модуля. В качестве примера здесь приведено определение Content
меню в файле system.links.menu.yml
:
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'
Других решений пока нет …