magento|后台新增自定义菜单并添加子账户的权限控制
自定义开发了几个后台控制器,需要加入到magento的权限管理里面,然后希望能够给予子账户的权限分配。这样普通的员工,如编辑,客服使用到该功能的时候就不会再出现未授权的情况了。具体的设置方法如下:
自定义模块的config.xml里面定义adminhtml块之间的权限内容:
<adminhtml>
<!--<layout>
<updates>
<common>
<file>cadmin.xml</file>
</common>
</updates>
</layout>-->
<menu>
<cadmin>
<title>XMS</title>
<sort_order>200</sort_order>
<children>
<postcode translate="title" module="common">
<title>邮编管理</title>
<action>admin-common/postcode/display</action>
<sort_order>0</sort_order>
</postcode>
<ocblock translate="title" module="common">
<title>oc-block</title>
<action>admin-common/block/index</action>
<sort_order>1</sort_order>
</ocblock>
</children>
</cadmin>
</menu>
<acl>
<resources>
<admin>
<children>
<cadmin translate="title" module="common">
<title>XMS</title>
<sort_order>110</sort_order>
<children>
<postcode translate="title">
<title>zip manager</title>
<sort_order>1</sort_order>
</postcode>
<ocblock translate="title">
<title>oc-block</title>
<sort_order>2</sort_order>
</ocblock>
</children>
</cadmin>
</children>
</admin>
</resources>
</acl>
<acl>
<resources>
<admin>
<children>
<system>
<children>
<config>
<children>
<xieyu_common>
<title>Common通用配置</title>
</xieyu_common>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
</adminhtml>
如上图,第一个layout为定义当前模块使用的模板布局文件,第二个menu定义菜单项,里面的定义了控制器名字postcode和模块名common,以及该菜单的两个下级菜单,以及分别对应的action方法。
第三个acl代表的是权限控制列表里面的显示和配置,同样适用分组的概念,一个主title包含多个路由。具体效果如下:
以上两步走完之后,还要在对应的控制器中添加isAllowed方法,默认情况下控制器返回的值为false,如果不添加该方法则依旧会提示access not ***。
protected function _isAllowed(){
return true;
//return Mage::getSingleton('admin/session')->isAllowed('admin-common/postcode');
}
网上有说添加的内容为第二行的,但是测试不行,只有直接return true才会起效。同时测验权限控制生效,未登录下不可访问。
另外,再提一下,后台默认的xml统一配置了启用head和footer,如同样需要在模板中载入,需要在控制器中载入模板,具体如下:
$this->loadLayout();
$this->renderLayout();
这样就可以获取到菜单导航和底部的版权信息了。其他更多更丰富的功能可以在模板的xml文件中自定义。或者也可以把以上内容单独在模块的etc目录下建立一个adminhtml.xml的文件,写入进去,此方法与写入到config.xml等效。