我需要在我的模块设置脚本中获取所有网站,因为我总是得到空数组。我甚至试图将我的设置脚本减少到
<?php
var_dump(Mage::app()->getWebsites()); die;
并且结果再次为空数组。 Magento 1.7.0.2 如果我在安装scrpt之外调用Mage :: app() - &gt; getWebsites(),则一切正常。我该怎么办?
答案 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
文件夹下的“数据”设置脚本。