gpt4 book ai didi

php - 如何判断 Magento 请求是针对前端页面还是后端页面?

转载 作者:IT王子 更新时间:2023-10-28 23:48:25 26 4
gpt4 key购买 nike

如何判断当前请求是针对后端页面还是前端页面?此检查将在观察者内部完成,因此如果有帮助,我确实可以访问请求对象。

我考虑过检查 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');
}

可能还有其他页面有这种行为,

另一个不错的选择是检查设计包的“面积”属性。

对于管理中的页面,这似乎不太可能被覆盖,因为该区域会影响管理区域设计模板和布局 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
}

这样,当/如果您发现管理员检查逻辑中的漏洞时,您可以在一个集中的位置纠正所有内容。

关于php - 如何判断 Magento 请求是针对前端页面还是后端页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9693020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com