Существуют ли ограничения доступа к конфигурации магазина при установке пользовательского модуля в Magento? Вот проблема
У меня есть скрипт установки:
<?php
$installer = $this;
$installer->startSetup();
$installer->run("
DROP TABLE IF EXISTS {$this->getTable('userpaymentban')};
CREATE TABLE IF NOT EXISTS {$this->getTable('userpaymentban')} (
`ban_id` INT NOT NULL AUTO_INCREMENT ,
`user_id` INT NOT NULL ,
`paymentmethod_id` VARCHAR(200) NOT NULL ,
`store_id` INT NOT NULL ,
PRIMARY KEY (`ban_id`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;");
$defaultNotBannedPaymentMethods = array();
$paymentMethods = Mage::getSingleton('payment/config')->getAllMethods();
Запрос в порядке, но последняя строка вызывает выбрасывание чего-то странного:
Error in file: "/var/www/magentotest/magento161/app/code/local/Alpha/Userpaymentban/sql/userpaymentban_setup/mysql4-install-0.1.0.php" - Warning: Invalid argument supplied for foreach() in /var/www/magentotest/magento161/app/code/core/Mage/Payment/Model/Config.php on line 76
#0 /var/www/magentotest/magento161/app/code/core/Mage/Core/Model/Resource/Setup.php(645): Mage::exception('Mage_Core', 'Error in file: ...')
#1 /var/www/magentotest/magento161/app/code/core/Mage/Core/Model/Resource/Setup.php(421): Mage_Core_Model_Resource_Setup->_modifyResourceDb('install', '', '0.1.0')
#2 /var/www/magentotest/magento161/app/code/core/Mage/Core/Model/Resource/Setup.php(327): Mage_Core_Model_Resource_Setup->_installResourceDb('0.1.0')
#3 /var/www/magentotest/magento161/app/code/core/Mage/Core/Model/Resource/Setup.php(235): Mage_Core_Model_Resource_Setup->applyUpdates()
#4 /var/www/magentotest/magento161/app/code/core/Mage/Core/Model/App.php(412): Mage_Core_Model_Resource_Setup::applyAllUpdates()
#5 /var/www/magentotest/magento161/app/code/core/Mage/Core/Model/App.php(338): Mage_Core_Model_App->_initModules()
#6 /var/www/magentotest/magento161/app/Mage.php(640): Mage_Core_Model_App->run(Array)
#7 /var/www/magentotest/magento161/index.php(80): Mage::run('', 'store')
#8 {main}
Исключение было сгенерировано в Mage_Payment_Model_Config
в коде:
<code> public function getAllMethods($store=null)
{
$methods = array();
$config = Mage::getStoreConfig('payment', $store);
echo "<pre>";
var_dump($config);
echo "
";
foreach ($ config как $ code => $ methodConfig) {
$ data = $ this -> _ getMethod ($ code, $ methodConfig);
if (false! == $ data) {
$ method [$ code] = $ data;
}
}
вернуть $ методы;
}
Как видите, я уже добавил некоторый код отладки, но все, что я получаю от этого, это просто NULL
Мой Magento в порядке (я думаю), потому что когда я использую Mage::getSingleton('payment/config')->getAllMethods()
вне области установки модуля (в файле с импортированным app/Mage.php
), я получаю хороший список всех способов оплаты.