Magento 2.x - Меню не отображается для пользовательской роли в пользовательском модуле
Я работаю с пользовательским модулем Magento 2.x. У меня есть правила ACL для этого, но в нем не отображается меню пользовательского модуля для пользовательских ролей пользователей.
Acl.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Acl/etc/acl.xsd">
<acl>
<resources>
<resource id="Magento_Backend::admin">
<resource id="technologymindz::base" title="TM Tag Manager" sortOrder="10" >
<resource id="technologymindz_googletagmanager::googletagmanager" title="General Settings" sortOrder="10" />
</resource>
</resource>
</resources>
</acl>
</config>
Menu.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../Backend/etc/menu.xsd">
<menu>
<add id="technologymindz::base" title="TM Tag Manager" module="Technologymindz_GoogleTagManager" sortOrder="10" resource="Technologymindz_GoogleTagManager::sample"/>
<add id="technologymindz_googletagmanager::googletagmanager" title="General Settings" module="Technologymindz_GoogleTagManager" sortOrder="10" parent="technologymindz::base" action="technologymindz_googletagmanager/items/" resource="Technologymindz_GoogleTagManager::items"/>
</menu>
</config>
Список меню пользовательского модуля в списке ресурсов и настройки сохранены.
Но при входе в систему и проверке пользовательской роли пользователя она не отображается.
Контроллер индекса использует разрешение
protected function _isAllowed()
{
return $this->_authorization->isAllowed('technologymindz::base');
}
Я использовал static content deploy
и cache flush
3 answers
Измените свой acl-код, как показано ниже
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Acl/etc/acl.xsd">
<acl>
<resources>
<resource id="Magento_Backend::admin">
<resource id="Technologymindz_GoogleTagManager::sample" title="TM Tag Manager" sortOrder="10" >
<resource id="Technologymindz_GoogleTagManager::items" title="General Settings" sortOrder="10" />
</resource>
</resource>
</resources>
</acl>
</config>
Если ваше имя ресурса Technologymindz_GoogleTagManager::items
, то вам нужно проверить то же самое в вашем методе _isAllowed()
protected function _isAllowed()
{
return $this->_authorization->isAllowed('Technologymindz_GoogleTagManager::items');
}
Редактировать:
Я также рекомендую установить атрибуты идентификатора и ресурса в menu.xml с теми же значениями Technologymindz_GoogleTagManager::items
Атрибут resource
в пунктах меню должен соответствовать атрибуту id
из тега ресурса в acl.xml
Ваши идентификаторы ресурсов technologymindz::base
и technologymindz_googletagmanager::googletagmanager
в acl.xml
, но ваш в файле меню, который вы используете technologymindz_googletagmanager::googletagmanager
и Technologymindz_GoogleTagManager::items
.
Шанс, что те, что в menu.xml
, совпадут с теми, что в acl.xml
. Также убедитесь, что вы учитываете регистр.