安全使用Magento的预配置事件

时间:2012-09-27 18:03:01

标签: php oop events magento

在Magento电子商务系统中,有三个事件在系统完全自举之前触发

resource_get_tablename    
core_collection_abstract_load_before
core_collection_abstract_load_after

这些事件在 Magento引导后也会触发

什么是安全和优雅(也许事件Mage核心团队祝福)的方式来检测何时 Magento已经完全引导,以便您可以安全地使用这些事件?

如果您尝试在预启动状态下使用某些功能,则整个请求将为404. best I've come up with(上下文的自我链接)到目前为止是这样的

class Packagename_Modulename_Model_Observer
{
    public function observerMethod($observer)
    {
        $is_safe = true;
        try
        {
            $store = Mage::app()->getSafeStore();
        }
        catch(Exception $e)
        {
            $is_safe = false;
        }
        if(!$is_safe)
        {
            return;
        }     

        //if we're still here, we could initialize store object
        //and should be well into router initialization
    }

}

但这有点笨拙。

1 个答案:

答案 0 :(得分:1)

我认为没有为此量身定制的事件。

您可以添加自己的并提交拉取请求/ Magento票,以包含一个好的。

在那之前,我认为唯一的方法是使用你找到的一个事件,并对Magento的初始化程度进行一些检查。

您是否尝试获取Mage::app()->getStores()?这可能会使您免于异常捕获。