Я разрабатываю модуль метода оплаты в Magento. Когда я нажимаю меню «Способы оплаты» в «Конфигурация Magento», я получаю следующую ошибку
Fatal error: Call to a member function toOptionArray() on a non-object in \xampp\htdocs\magento\app\code\core\Mage\Adminhtml\Block\System\Config\Form.php on line 421
См. Приведенную ниже ссылку для кода модуля, который я разрабатывал
Модуль Magento Fatal error: Class 'Mage_Cashondelivery_Helper_Data' не найден в \ xampp \ htdocs \ magento \ app \ Mage.php в строке 516
Я использую Xampp 1.7.3 и magento 1.6.1. Пожалуйста помоги.
В вашем system.xml у вас есть следующий код
<payment_action translate="label"> <label>Payment Action</label> <frontend_type>select</frontend_type> <source_model>cashondelivery/createorder</source_model> <sort_order>2</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>0</show_in_store> </payment_action>
cashondelivery/createorder
модель указана как cashondelivery/createorder
.
Согласно коду, опубликованному в вопросе, который вы ссылаетесь, этот класс является моделью метода оплаты, а не исходной.
Если вы реализуете метод toOptionArray()
на модели, он также будет работать как исходная модель конфигурации системы, но это не похоже на плохой выбор.
Я бы предположил, что исходная модель, которую вы ищете, – это что-то вроде paygate/authorizenet_source_paymentAction
.
Исходные модели в Magento существуют для предоставления списков опций для выбора и мультиселекций. Для этого они реализуют метод toOptionArray()
.
Параметры возвращаются как массив, который имеет следующий формат:
public function toOptionArray() { return array( array('value' => $value1, 'label' => 'The label for option 1'), array('value' => $value2, 'label' => 'The label for option 2'), array('value' => $value3, 'label' => 'The label for option 3') // ... etc ... ); }
Источникам исходных моделей системы не нужно расширять суперкласс и не нужно реализовывать какие-либо методы, кроме toOptionArray()
.
Атрибуты EAV select и multiselect также используют исходные модели, но они должны расширять eav/entity_attribute_source_abstract
и являются более сложными, поэтому я не буду более подробно eav/entity_attribute_source_abstract
на этом месте.