Tuesday, April 16, 2013

Magento: How to get controller, module, action and router name?


You can easily get controller name, action name, router name and module name in template file or in any class file.
IN TEMPLATE FILES
$this->getRequest() can be used in template (phtml) files.
Here is the code:
/**
 * get Controller name
 */
$this->getRequest()->getControllerName();
 
/**
 * get Action name, i.e. the function inside the controller
 */
$this->getRequest()->getActionName();
 
/**
 * get Router name
 */
$this->getRequest()->getRouteName();
 
/**
 * get module name
 */
$this->getRequest()->getModuleName();
IN CLASS FILES
$this might not work in class (php) files. In this case, you need to use Mage::app().
Here is the code:
/**
 * get Controller name
 */
Mage::app()->getRequest()->getControllerName();
 
/**
 * get Action name, i.e. the function inside the controller
 */
Mage::app()->getRequest()->getActionName();
 
/**
 * get Router name
 */
Mage::app()->getRequest()->getRouteName();
 
/**
 * get module name
 */
Mage::app()->getRequest()->getModuleName();
The above functions (getControllerName, getActionName, getRouteName, getModuleName) are present in the class Mage_Core_Model_Url.
You can explore all requests with print_r.
echo "<pre>";
    print_r(Mage::app()->getRequest()); 
echo "</pre>";
Hope this helps. Thanks.

No comments:

Post a Comment