Lesson 6.1: Create a menu in Magento backend

create magento menu in backend

Welcome back to Magento Tutorial series!
In lesson 5, we have learned how to create and upgrade a Magento module.
Today we move forward to lesson 6.1: Create a Magento module in backend: Add a Magento menu in backend. 
In this lesson, we would learn how to:

  • Configure the adminhtml router
  • Add Magento menu from file adminhtml.xml and configure ACL for menus
  • Add controllers for each Magento menu

Let’s go to the first part of Lesson 6:

1. Create a Magento menu from file adminhtml.xml

•    Menu Item.

<?xml version="1.0"?>
<config>
<menu>
<[menu identify] module="[module name] " translate="title">
<title>[title]</title>
<sort_order>[number sort order]</sort_order>
<children>
<[menu child identify]  module="[module name] " translate="title">
<title>[title 2]</title>
<sort_order>[ number sort order] </sort_order>
<action>
[module adminhtml router]/adminhtml_[controller]
</action>
</[menu child identify]  >
<settings module="[module name] " translate="title">
<title>[title 3] </title>
<sort_order>[number sort order]</</sort_order>
<action>[module/controller/action] </action>
</settings>
</children>
</[menu identify]>
</menu>

•    The meaning of tags

  • <title> tag : Assign a label to the menu, displaying on horizontal navigation menu bar
  • <sort_order> tag: assign sort value to each menu, by left-to-right, top-to-bottom order, defined by increasing value of sort_order value.
  • <action> tag : define the controller/action that processing this menu, similar to assigning links to the menu.

•    Menu displayed in backend.

For example:
File app\code\local\Magestore\Lesson06\etc\adminhtml.xml

<?xml version="1.0"?>
<config>
<menu>
<lesson06 module="lesson06" translate="title">
<title>Lesson06</title>
<sort_order>71</sort_order>
<children>
<lesson06 module="lesson06" translate="title">
<title>Manage Items</title>
<sort_order>0</sort_order>
<action>
lesson06admin/adminhtml_lesson06
</action>
</lesson06>
<settings module="lesson06" translate="title">
<title>Settings</title>
<sort_order>1000</sort_order>
<action>adminhtml/system_config/edit/section/lesson06</action>
</settings>
</children>
</lesson06>
</menu>

Result :

Create magento menu in backend - menu displayed - Magento Open Course

2. Create ACL to help setting permissions to Magento menus

•    Define ACL in file adminhtml.xml
For example:

<acl>
<resources>
<all>
<title>Allow Everything</title>
</all>
<admin>
<children>
<system>
<children>
<config>
<children>
<lesson06 module="lesson06" translate="title">
<title>Lesson06</title>
<sort_order>71</sort_order>
</lesson06>
</children>
</config>
</children>
</system>
<lesson06 module="lesson06" translate="title">
<title>Lesson06</title>
<sort_order>71</sort_order>
<children>
<lesson06 module="lesson06" translate="title">
<title>Manage Items</title>
<sort_order>0</sort_order>
</lesson06>
<settings module="lesson06" translate="title">
<title>Settings</title>
<sort_order>1000</sort_order>
</settings>
</children>
</lesson06>
</children>
</admin>
</resources>
</acl>

•    Create roles to set permissions for users in backend

We can create roles to the new created Magento menus by accessing backend following this path:
System -> Permissions -> Roles -> Add New Role

Create Magento menu in backend - create-menu-set-permissions- Magento Open Course

Applying ACL Magento.

File : app\code\local\Magestore\Lesson06\controllers\Adminhtml\Lesson06Controller.php

protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('lesson06');
}

•    Effects of permission settings to corresponding Admin User

Without adding roles to user (as above), when a user access a Magento  menu, there is a denied error message.

Create Magento menu in backend - permission error - Magento Open Course

That is the end of part 1 –  Create a Magento menu in backend.

In part 2, we will learn how to create controller action in backend.

Enjoy coding and see you later. Follow us in Magento Open Course for Magento Tutorial.

Lesson 6.1: Create a menu in Magento backend
3.3 (65.71%) 21 votes

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *