Невозможно заставить работать базовый пользовательский модуль оплаты Magento - PullRequest
0 голосов
/ 14 сентября 2011

Я хочу создать платежный модуль, который в основном идентичен методу чека / денежного перевода, в котором, когда вы нажимаете переключатель, чтобы выбрать его, внизу появляется часть информации с инструкциями.

Я создал модуль, который работает, но я не могу получить эту информацию под ним.Когда я включаю его, я просто получаю пустую страницу ошибки (без сообщения).

У меня есть следующие файлы в папке моего модуля:

  • Block / Form /Bacs.php
  • Блок / Информация / Bacs.php
  • и т.д. / config.xml
  • etc / system.xml
  • Model / Method / Bacs.php

И вот, у меня есть следующие файлы:

  • payment / info / bacs.phtml
  • payment / form / bacs.phtml

Я думаю, чтопроблема заключается в моих блочных php-файлах, потому что когда я удаляю ссылки на них из моего файла модели, модуль работает.Вот обзор файлов, в которых, как мне кажется, заключается проблема:

Model / Method / Bacs.php

class Creare_Bacs_Model_Method_Bacs extends Mage_Payment_Model_Method_Abstract
{

    protected $_code  = 'bacs';
    protected $_formBlockType = 'bacs/form_bacs';
    protected $_infoBlockType = 'bacs/info_bacs';

    public function assignData($data)
    {
        $details = array();

        if ($this->getInstructions()) {
            $details['instructions'] = $this->getInstructions();
        }
        if (!empty($details)) {
            $this->getInfoInstance()->setAdditionalData(serialize($details));
        }
        return $this;
    }

    public function getInstructions()
    {
        return $this->getConfigData('instructions');
    }

}

Block / Info / Bacs.php

class Creare_Bacs_Block_Info_Bacs extends Mage_Payment_Block_Info
{

    protected $_instructions;

    protected function _construct()
    {
        parent::_construct();
        $this->setTemplate('payment/info/bacs.phtml');
    }

    public function getInstructions()
    {
        if (is_null($this->_instructions)) {
            $this->_convertAdditionalData();
        }
        return $this->_instructions;
    }

    protected function _convertAdditionalData()
    {
        $details = @unserialize($this->getInfo()->getAdditionalData());
        if (is_array($details)) {
            $this->_instructions = isset($details['instructions']) ? (string) $details['instructions'] : '';
        } else {
            $this->_instructions = '';
        }
        return $this;
    }

}

Block / Form / Bacs.php

class Creare_Bacs_Block_Form_Bacs extends Mage_Payment_Block_Form
{

    protected function _construct()
    {
        parent::_construct();
        $this->setTemplate('payment/form/bacs.phtml');
    }

}

В моем файле system.xml у меня есть это, которое выводит инструкции textareaна картинке ниже:

<instructions translate="label">
              <label>Instructions</label>
              <frontend_type>textarea</frontend_type>
              <sort_order>2</sort_order>
              <show_in_default>1</show_in_default>
              <show_in_website>1</show_in_website>
              <show_in_store>1</show_in_store>
</instructions>

enter image description here

Действительно не уверен, что я сделал неправильно.Я не хочу, чтобы этот первый пост был слишком длинным, поэтому дайте мне знать, нужны ли еще какие-то файлы.Я уверен, что проблема в предоставленных мной блочных файлах.

Может кто-нибудь сказать мне, если я допустил ошибку при создании любого из файлов, которые я показал выше?

1 Ответ

3 голосов
/ 15 сентября 2011

Я такой тупой.Забыл зарегистрировать блоки в config.xml (вы бы заметили это Anton S)

<blocks>
    <bacs>
       <class>Creare_Bacs_Block</class>
    </bacs>
</blocks>
...