无法在magento安装脚本中获取所有网站

时间:2013-12-05 17:52:28

标签: magento

我需要在我的模块设置脚本中获取所有网站,因为我总是得到空数组。我甚至试图将我的设置脚本减少到

<?php
var_dump(Mage::app()->getWebsites()); die;

并且结果再次为空数组。 Magento 1.7.0.2 如果我在安装scrpt之外调用Mage :: app() - &gt; getWebsites(),则一切正常。我该怎么办?

1 个答案:

答案 0 :(得分:4)

您需要在数据设置脚本中执行此操作。

“正常”设置脚本 - 模块的 sql 文件夹下的设置脚本 - 在Mage_Core_Model_App::_initModules()中调用::run()时评估/执行:

public function run($params)
{
    $options = isset($params['options']) ? $params['options'] : array();
    $this->baseInit($options);
    Mage::register('application_params', $params);

    if ($this->_cache->processRequest()) {
        $this->getResponse()->sendResponse();
    } else {
        $this->_initModules();
        $this->loadAreaPart(Mage_Core_Model_App_Area::AREA_GLOBAL, Mage_Core_Model_App_Area::PART_EVENTS);

        if ($this->_config->isLocalConfigLoaded()) {
            $scopeCode = isset($params['scope_code']) ? $params['scope_code'] : '';
            $scopeType = isset($params['scope_type']) ? $params['scope_type'] : 'store';
            $this->_initCurrentStore($scopeCode, $scopeType);
            $this->_initRequest();
            Mage_Core_Model_Resource_Setup::applyAllDataUpdates();
        }

        $this->getFrontController()->dispatch();
    }
    return $this;
}

在调用::_initModules()后注意,::_initCurrentStore()被调用 - 这反过来调用_initStores(),它会填充模块所需的数据。在此之后,对Mage_Core_Model_Resource_Setup::applyAllDataUpdates()的调用将立即处理模块的 data 文件夹下的“数据”设置脚本。