ठीक है, अपनी अपग्रेड स्क्रिप्ट में एडमिन स्टोर का उपयोग करने के लिए
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
आपका दृष्टिकोण Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));
सफल नहीं हो सकता, क्योंकि व्यवस्थापक के लिए वास्तव में कोई मौजूदा लोड करने योग्य स्टोरव्यू नहीं है
अक्सर मैं इस तरह से एक पैटर्न का उपयोग करता हूं:
// remembering old current store
$currentStore = Mage::app()->getCurrentStore();
// switching to admin store
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
// switching back to old current store
Mage::app()->setCurrentStore($currentStore->getStoreId());
अन्यथा कभी-कभी अपग्रेड स्क्रिप्ट निष्पादित करने के बाद आपके विज़िटर को कभी-कभी फ्रंटएंड के बजाय व्यवस्थापक पृष्ठ पर भेज दिया जाएगा।
अपडेट करें:
मैंने नीचे दिए गए प्रश्न की गलत व्याख्या की, इसलिए यहां ^ ^ समझाने का एक नया प्रयास किया गया है
उन्नयन स्क्रिप्ट को कोर में गहरी विधि से बुलाया जाता है (Mage_Core_Model_Resource_Setup::_modifyResourceDb(...)
)
यहाँ मैंने स्टैक को सूचीबद्ध करने का प्रयास किया
Mage_Core_Model_App::run($params)
Mage_Core_Model_App::_initModules()
Mage_Core_Model_Resource_Setup::applyAllUpdates()
Mage_Core_Model_Resource_Setup::applyUpdates()
Mage_Core_Model_Resource_Setup::_upgradeResourceDb($oldVersion, $newVersion)
Mage_Core_Model_Resource_Setup::_modifyResourceDb($actionType, $fromVersion, $toVersion)
और अब एक नजर Mage_Core_model_App::run($params)
:
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()
से पहले कहा जाता है $scopeCode
और$scopeType
निर्धारित किया निर्धारित किया जाता है।
वर्तमान में मैं यह पता नहीं लगा सकता कि ग्रहण की गई गिरावट कहां परिभाषित की गई है।