ঠিক আছে, আপনার আপগ্রেড স্ক্রিপ্টগুলিতে অ্যাডমিন স্টোরটি ব্যবহার করুন just
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
এটি নির্ধারিত হয়।
বর্তমানে অনুমান করা ফ্যালব্যাক সংজ্ঞায়িত হয়েছে তা আমি বুঝতে পারি না।