Magento - 无法保存自定义模块的角色资源

时间:2013-05-02 09:36:33

标签: magento module acl

我已经创建了一个自定义模块,我的config.xml如下......

<?xml version="1.0"?>
  <config>
   <admin>
    <routers>
        <blacklist>
            <use>admin</use>
            <args>
                <module>Leon_Blacklist</module>
                <frontName>blacklist</frontName>
            </args>
        </blacklist>
    </routers>
</admin>
<adminhtml>
    <menu>
        <blacklist translate="title" module="blacklist">
            <title>Blacklist</title>
            <sort_order>71</sort_order>               
            <children>
                <items translate="title" module="blacklist">
                    <title>Manage Items</title>
                    <sort_order>0</sort_order>
                    <action>blacklist/adminhtml_blacklist</action>
                </items>
            </children>
        </blacklist>
    </menu>
    <acl>
        <resources>
            <all>
                <title>Allow Everything</title>
            </all>
            <admin>
                <children>
                    <Leon_Blacklist translate="title" module="blacklist">
                        <title>Blacklist Module</title>
                        <sort_order>10</sort_order>

                        <children>
                            <items translate="title" module="blacklist">
                                <title>Manage Items</title>
                            </items>                        
                        </children>
                    </Leon_Blacklist>
                </children>
            </admin>
        </resources>
    </acl>
    <layout>
        <updates>
            <blacklist>
                <file>blacklist.xml</file>
            </blacklist>
        </updates>
    </layout>
</adminhtml> 
<config>

如果管理员帐户已登录,模块将按预期工作。我可以在管理面板和角色资源选项卡(系统 - >权限 - &gt;角色)中看到该模块,但是当我尝试检查时模块并保存用户角色,它会说它已被保存。但是当我重新检查用户角色时,它仍未被检查。

当我尝试使用具有所述用户角色的帐户登录时,隐藏自定义模块。什么似乎是问题?任何形式的帮助都非常感谢..

感谢。

2 个答案:

答案 0 :(得分:5)

你的acl部分配置有点不对劲。标签应该与菜单部分类似。所以在你的情况下它应该是这样的:

<acl>
    <resources>
        <admin>
            <children>
                <blacklist translate="title" module="blacklist">
                    <title>Blacklist Module</title>
                    <sort_order>10</sort_order>

                    <children>
                        <items translate="title" module="blacklist">
                            <title>Manage Items</title>
                        </items>                        
                    </children>
                </blacklist>
            </children>
        </admin>
    </resources>
</acl>

答案 1 :(得分:0)

这是我的config.xml

的acl部分
<acl>
    <resources>
        <all>
            <title>Allow Everything</title>
        </all>
        <admin>
            <children>
                <banner translate="title" module="banner">
                    <title>Banner Module</title>
                    <sort_order>10</sort_order>
                    <children>
                        <banner translate="title" module="banner">
                            <title>Manage Banners</title>
                        </banner>                      
                    </children>
                </banner>
            </children>
        </admin>
    </resources>
</acl>

同时在控制器中添加以下功能以避免“拒绝访问”消息

protected function _isAllowed(){
        return true;
}

代码取自:http://chandreshrana.blogspot.in/2015/06/custom-module-role-not-save-in.html