How can I tell if a Magento request is for a frontend or backend page?(如何判断Magento请求是针对前端页面还是针对后端页面?)
本文介绍了如何判断Magento请求是针对前端页面还是针对后端页面?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何判断当前请求是针对后端页面还是针对前端页面?此检查将在观察器内部完成,因此如果有帮助,我确实有权访问请求对象。
我考虑过检查Mage::getSingleton('admin/session')->getUser()
,但我认为这不是一个非常可靠的方法。我希望有更好的解决方案。
推荐答案
这是没有好答案的领域之一。Magento本身并不为此信息提供显式的方法/API,因此对于任何解决方案,您都需要检查环境并进行推断。
我正在使用
Mage::app()->getStore()->isAdmin()
过一段时间,但事实证明有些管理页面(Magento Connect包管理器)并不是这样。由于某种原因,此页将存储ID显式设置为1,这使得isAdmin
返回为false。
#File: app/code/core/Mage/Connect/controllers/Adminhtml/Extension/CustomController.php
public function indexAction()
{
$this->_title($this->__('System'))
->_title($this->__('Magento Connect'))
->_title($this->__('Package Extensions'));
Mage::app()->getStore()->setStoreId(1);
$this->_forward('edit');
}
可能有其他页面具有此行为,
另一个好办法是检查设计包的"Area"属性。
对于管理中的页面,这似乎不太可能被覆盖,因为该区域会影响管理区域设计模板和布局XML文件的路径。
无论您选择从环境中推断什么,都要创建新的Magento模块,并向其中添加帮助器类
class Namespace_Modulename_Helper_Isadmin extends Mage_Core_Helper_Abstract
{
public function isAdmin()
{
if(Mage::app()->getStore()->isAdmin())
{
return true;
}
if(Mage::getDesign()->getArea() == 'adminhtml')
{
return true;
}
return false;
}
}
然后,当您需要检查您是否在管理员中时,请使用此帮助器
if( Mage::helper('modulename/isadmin')->isAdmin() )
{
//do the thing about the admin thing
}
这样,当您在管理员检查逻辑中发现漏洞时,您可以在一个集中位置更正所有内容。
这篇关于如何判断Magento请求是针对前端页面还是针对后端页面?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何判断Magento请求是针对前端页面还是针对后端页面?
基础教程推荐
猜你喜欢
- 超薄框架REST服务两次获得输出 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 在多维数组中查找最大值 2021-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01