首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Magento自定义模块管理员权限

Magento自定义模块管理员权限
EN

Stack Overflow用户
提问于 2010-07-08 00:14:50
回答 5查看 16.5K关注 0票数 3

我已经为Magento创建了一些自定义模块,当我尝试为模块分配权限时(选中复选框),当我单击save it时,取消选中该框。

有谁有什么想法吗?听起来好像我的config.xml文件有问题,所以我把它贴在这里以防万一:

代码语言:javascript
复制
<config>
<modules>
    <Wpe_Vendorlist>
        <version>0.1.0</version>
    </Wpe_Vendorlist>
</modules>
<admin>
    <routers>
        <vendorlist>
            <use>admin</use>
            <args>
                <module>Wpe_Vendorlist</module>
                <frontName>vendorlist</frontName>
            </args>
        </vendorlist>
    </routers>
</admin>
<adminhtml>
    <menu>
        <customer>
            <children>
                <items module="vendorlist">
                    <title>SO Vendor List</title>
                    <sort_order>999</sort_order>
                    <action>vendorlist/adminhtml_vendorlist</action>
                </items>
            </children>
        </customer>
    </menu>
    <acl>
        <resources>
            <all>
                <title>Allow Everything</title>
            </all>
            <admin>
                <children>
                    <Wpe_Vendorlist>
                        <title>Vendorlist Module</title>
                        <sort_order>10</sort_order>
                    </Wpe_Vendorlist>
                </children>
            </admin>
        </resources>
    </acl>
    <layout>
        <updates>
            <vendorlist>
                <file>vendorlist.xml</file>
            </vendorlist>
        </updates>
    </layout>
</adminhtml>
<global>
    <models>
        <vendorlist>
            <class>Wpe_Vendorlist_Model</class>
            <resourceModel>vendorlist_mysql4</resourceModel>
        </vendorlist>
        <vendorlist_mysql4>
            <class>Wpe_Vendorlist_Model_Mysql4</class>
            <entities>
                <vendorlist>
                    <table>vendorlist</table>
                </vendorlist>
            </entities>
        </vendorlist_mysql4>
    </models>
    <resources>
        <vendorlist_setup>
            <setup>
                <module>Wpe_Vendorlist</module>
            </setup>
            <connection>
                <use>core_setup</use>
            </connection>
        </vendorlist_setup>
        <vendorlist_write>
            <connection>
                <use>core_write</use>
            </connection>
        </vendorlist_write>
        <vendorlist_read>
            <connection>
                <use>core_read</use>
            </connection>
        </vendorlist_read>
    </resources>
    <blocks>
        <vendorlist>
            <class>Wpe_Vendorlist_Block</class>
        </vendorlist>
    </blocks>
    <helpers>
        <vendorlist>
            <class>Wpe_Vendorlist_Helper</class>
        </vendorlist>
    </helpers>
</global>
</config>
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-07-08 17:21:19

我强烈建议您看看Alan Storm's article关于系统配置和他系列的其他内容,这是我找到的关于magento编程的最好的信息。

对于这个特殊的问题,下面是我如何在我的模块中使用您的模块名称完成此操作的:

代码语言:javascript
复制
<acl><!-- permits -->
    <resources>
        <admin>
            <children>
                <customer translate="title" module="vendorlist"><!-- this tag matches the menu tag, and the same for his children -->
                    <title>what will appears in the checkboxes tree when you create a role</title>
                    <children>
                        <firstchild>
                            <title>what will appears in the checkboxes tree when you create a role</title>
                        </firstchild>
                    </children>
                </customer>
            </children>
        </admin>
    </resources>
</acl>

您将不需要:

代码语言:javascript
复制
                <children>
                    <firstchild>
                        <title>what will appears in the checkboxes tree when you create a role</title>
                    </firstchild>
                </children>

由于您的模块中没有子模块,似乎我只是将其作为一个示例。

我希望这能帮到你

票数 5
EN

Stack Overflow用户

发布于 2011-03-01 20:03:58

请更换您的config.xml

代码语言:javascript
复制
<acl>
    <resources>
        <all>
            <title>Allow Everything</title>
        </all>
        <admin>
            <children>
                <Wpe_Vendorlist>
                    <title>Vendorlist Module</title>
                    <sort_order>10</sort_order>
                </Wpe_Vendorlist>
            </children>
        </admin>
    </resources>
</acl>

使用

代码语言:javascript
复制
<acl>
    <resources>
        <all>
            <title>Allow Everything</title>
        </all>
        <admin>
            <children>
                <vendorlist>
                    <title>Vendorlist Module</title>
                    <sort_order>10</sort_order>
                </vendorlist>
            </children>
        </admin>
    </resources>
</acl>

只需要在子标签后修改vendorlist,而不是Wpe_Vendorlist。这个改变在我的自定义模块中起作用了,希望也能帮助其他人。

票数 2
EN

Stack Overflow用户

发布于 2013-03-28 20:33:50

您应该在资源和菜单项名称中仅使用小写字符。请参阅app/code/core/Mage/Adminhtml/Block/Permissions/Tab/Rolesedit.php上的构造函数

代码语言:javascript
复制
public function __construct()
{
    ...

    foreach ($rules_set->getItems() as $item) {
        $itemResourceId = $item->getResource_id();
        if (array_key_exists(strtolower($itemResourceId), $resources) && $item->getPermission() == 'allow') {
            $resources[$itemResourceId]['checked'] = true;
            array_push($selrids, $itemResourceId);
        }
    }

    ....

我还建议你考虑将acl和菜单信息转移到adminhtml.xml,而不是放在config.xml上。

另一个问题是,您应该在菜单和acl树中具有完全相同的结构,以便您的acl反映菜单结构,并且magento知道在为角色授予权限时启用什么。Ivan Chepurnyi有一篇关于这个here的很好的文章

因此,在这些更改之后,您在adminhtml.xml上会得到类似以下内容的结果

代码语言:javascript
复制
<adminhtml>
    <menu>
        <customer>
            <children>
                <wpe_vendorlist module="vendorlist">
                    <title>SO Vendor List</title>
                    <sort_order>999</sort_order>
                    <action>vendorlist/adminhtml_vendorlist</action>
                </wpe_vendorlist>
            </children>
        </customer>
    </menu>
    <acl>
        <resources>
            <all>
                <title>Allow Everything</title>
            </all>
            <admin>
                <children>
                    <customer>
                        <children>
                            <wpe_vendorlist>
                                <title>Vendorlist Module</title>
                                <sort_order>10</sort_order>
                            </wpe_vendorlist>
                        </children>
                    </customer>
                </children>
            </admin>
        </resources>
    </acl>
</adminhtml>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3196723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档