user4089052
user4089052

Reputation: 43

Getting Fatal error: Call to undefined method Loader::controller() in Open Cart Payment Module?

I just wanted to clone the moneybookers payment module to mpower payment module in Open Cart and guess what I am stuck here now with this error as :

Fatal error: Call to undefined method Loader::controller() in /home/hunter/public_html/opencart_new/admin/controller/payment/mpower.php on line 213

Here is the full /home/hunter/public_html/opencart_new/admin/controller/payment/mpower.php file as :

<?php
class ControllerPaymentMPower extends Controller {
private $error = array();

public function index() {
    $this->load->language('payment/mpower');

    $this->document->setTitle($this->language->get('heading_title'));

    $this->load->model('setting/setting');

    if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
        $this->model_setting_setting->editSetting('mpower', $this->request->post);

        $this->session->data['success'] = $this->language->get('text_success');

        $this->response->redirect($this->url->link('extension/payment', 'token=' . $this->session->data['token'], 'SSL'));
    }

    $data['heading_title'] = $this->language->get('heading_title');

    $data['text_edit'] = $this->language->get('text_edit');
    $data['text_enabled'] = $this->language->get('text_enabled');
    $data['text_disabled'] = $this->language->get('text_disabled');
    $data['text_all_zones'] = $this->language->get('text_all_zones');

    $data['entry_MasterKey'] = $this->language->get('entry_MasterKey');
    $data['entry_PublicKey'] = $this->language->get('entry_PublicKey');
    $data['entry_PrivateKey'] = $this->language->get('entry_PrivateKey');
    $data['entry_Mode'] = $this->language->get('entry_Mode');
    $data['entry_Token'] = $this->language->get('entry_Token');
    $data['entry_StoreName'] = $this->language->get('entry_StoreName');
    $data['entry_StoreTagline'] = $this->language->get('entry_StoreTagline');
    $data['entry_PhoneNumber'] = $this->language->get('entry_PhoneNumber');
    $data['entry_PostalAddress'] = $this->language->get('entry_PostalAddress');
    $data['entry_total'] = $this->language->get('entry_total');
    $data['entry_order_status'] = $this->language->get('entry_order_status');
    $data['entry_pending_status'] = $this->language->get('entry_pending_status');
    $data['entry_canceled_status'] = $this->language->get('entry_canceled_status');
    $data['entry_failed_status'] = $this->language->get('entry_failed_status');
    $data['entry_chargeback_status'] = $this->language->get('entry_chargeback_status');
    $data['entry_geo_zone'] = $this->language->get('entry_geo_zone');
    $data['entry_status'] = $this->language->get('entry_status');
    $data['entry_sort_order'] = $this->language->get('entry_sort_order');
    $data['entry_custnote'] = $this->language->get('entry_custnote');

    $data['help_total'] = $this->language->get('help_total');

    $data['button_save'] = $this->language->get('button_save');
    $data['button_cancel'] = $this->language->get('button_cancel');

    if (isset($this->error['warning'])) {
        $data['error_warning'] = $this->error['warning'];
    } else {
        $data['error_warning'] = '';
    }

    if (isset($this->error['email'])) {
        $data['error_email'] = $this->error['email'];
    } else {
        $data['error_email'] = '';
    }

    $data['breadcrumbs'] = array();

    $data['breadcrumbs'][] = array(
        'text' => $this->language->get('text_home'),
        'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], 'SSL')
    );

    $data['breadcrumbs'][] = array(
        'text' => $this->language->get('text_payment'),
        'href' => $this->url->link('extension/payment', 'token=' . $this->session->data['token'], 'SSL')
    );

    $data['breadcrumbs'][] = array(
        'text' => $this->language->get('heading_title'),
        'href' => $this->url->link('payment/mpower', 'token=' . $this->session->data['token'], 'SSL')
    );

    $data['action'] = $this->url->link('payment/mpower', 'token=' . $this->session->data['token'], 'SSL');

    $data['cancel'] = $this->url->link('extension/payment', 'token=' . $this->session->data['token'], 'SSL');

    if (isset($this->request->post['mpower_MasterKey'])) {
        $data['mpower_MasterKey'] = $this->request->post['mpower_MasterKey'];
    } else {
        $data['mpower_MasterKey'] = $this->config->get('mpower_MasterKey');
    }

    if (isset($this->request->post['mpower_PublicKey'])) {
        $data['mpower_PublicKey'] = $this->request->post['mpower_PublicKey'];
    } else {
        $data['mpower_PublicKey'] = $this->config->get('mpower_PublicKey');
    }

    if (isset($this->request->post['mpower_PrivateKey'])) {
        $data['mpower_PrivateKey'] = $this->request->post['mpower_PrivateKey'];
    } else {
        $data['mpower_PrivateKey'] = $this->config->get('mpower_PrivateKey');
    }

    if (isset($this->request->post['mpower_Token'])) {
        $data['mpower_Token'] = $this->request->post['mpower_Token'];
    } else {
        $data['mpower_Token'] = $this->config->get('mpower_Token');
    }

    if (isset($this->request->post['mpower_mode'])) {
        $data['mpower_mode'] = $this->request->post['mpower_mode'];
    } else {
        $data['mpower_mode'] = $this->config->get('mpower_mode');
    }

    if (isset($this->request->post['mpower_StoreName'])) {
        $data['mpower_StoreName'] = $this->request->post['mpower_StoreName'];
    } else {
        $data['mpower_StoreName'] = $this->config->get('mpower_StoreName');
    }

    if (isset($this->request->post['mpower_StoreTagline'])) {
        $data['mpower_StoreTagline'] = $this->request->post['mpower_StoreTagline'];
    } else {
        $data['mpower_StoreTagline'] = $this->config->get('mpower_StoreTagline');
    }

    if (isset($this->request->post['mpower_PhoneNumber'])) {
        $data['mpower_PhoneNumber'] = $this->request->post['mpower_PhoneNumber'];
    } else {
        $data['mpower_PhoneNumber'] = $this->config->get('mpower_PhoneNumber');
    }

    if (isset($this->request->post['mpower_PostalAddress'])) {
        $data['mpower_PostalAddress'] = $this->request->post['mpower_PostalAddress'];
    } else {
        $data['mpower_PostalAddress'] = $this->config->get('mpower_PostalAddress');
    }

    if (isset($this->request->post['mpower_total'])) {
        $data['mpower_total'] = $this->request->post['mpower_total'];
    } else {
        $data['mpower_total'] = $this->config->get('mpower_total');
    }

    if (isset($this->request->post['mpower_order_status_id'])) {
        $data['mpower_order_status_id'] = $this->request->post['mpower_order_status_id'];
    } else {
        $data['mpower_order_status_id'] = $this->config->get('mpower_order_status_id');
    }

    if (isset($this->request->post['mpower_pending_status_id'])) {
        $data['mpower_pending_status_id'] = $this->request->post['mpower_pending_status_id'];
    } else {
        $data['mpower_pending_status_id'] = $this->config->get('mpower_pending_status_id');
    }

    if (isset($this->request->post['mpower_canceled_status_id'])) {
        $data['mpower_canceled_status_id'] = $this->request->post['mpower_canceled_status_id'];
    } else {
        $data['mpower_canceled_status_id'] = $this->config->get('mpower_canceled_status_id');
    }

    if (isset($this->request->post['mpower_failed_status_id'])) {
        $data['mpower_failed_status_id'] = $this->request->post['mpower_failed_status_id'];
    } else {
        $data['mpower_failed_status_id'] = $this->config->get('mpower_failed_status_id');
    }

    if (isset($this->request->post['mpower_chargeback_status_id'])) {
        $data['mpower_chargeback_status_id'] = $this->request->post['mpower_chargeback_status_id'];
    } else {
        $data['mpower_chargeback_status_id'] = $this->config->get('mpower_chargeback_status_id');
    }

    $this->load->model('localisation/order_status');

    $data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses();

    if (isset($this->request->post['mpower_geo_zone_id'])) {
        $data['mpower_geo_zone_id'] = $this->request->post['mpower_geo_zone_id'];
    } else {
        $data['mpower_geo_zone_id'] = $this->config->get('mpower_geo_zone_id');
    }

    $this->load->model('localisation/geo_zone');

    $data['geo_zones'] = $this->model_localisation_geo_zone->getGeoZones();

    if (isset($this->request->post['mpower_status'])) {
        $data['mpower_status'] = $this->request->post['mpower_status'];
    } else {
        $data['mpower_status'] = $this->config->get('mpower_status');
    }

    if (isset($this->request->post['mpower_sort_order'])) {
        $data['mpower_sort_order'] = $this->request->post['mpower_sort_order'];
    } else {
        $data['mpower_sort_order'] = $this->config->get('mpower_sort_order');
    }

    if (isset($this->request->post['mpower_rid'])) {
        $data['mpower_rid'] = $this->request->post['mpower_rid'];
    } else {
        $data['mpower_rid'] = $this->config->get('mpower_rid');
    }

    if (isset($this->request->post['mpower_custnote'])) {
        $data['mpower_custnote'] = $this->request->post['mpower_custnote'];
    } else {
        $data['mpower_custnote'] = $this->config->get('mpower_custnote');
    }

    $data['header'] = $this->load->controller('common/header');
    $data['column_left'] = $this->load->controller('common/column_left');
    $data['footer'] = $this->load->controller('common/footer');

    $this->response->setOutput($this->load->view('payment/mpower.tpl', $data));
  }

  protected function validate() {
    if (!$this->user->hasPermission('modify', 'payment/mpower')) {
        $this->error['warning'] = $this->language->get('error_permission');
    }

    if (!$this->request->post['mpower_MasterKey']) {
        $this->error['MasterKey'] = $this->language->get('error_MasterKey');
    }

    if (!$this->request->post['mpower_PublicKey']) {
        $this->error['PublicKey'] = $this->language->get('error_PublicKey');
    }

    if (!$this->request->post['mpower_PrivateKey']) {
        $this->error['PrivateKey'] = $this->language->get('error_PrivateKey');
    }

    if (!$this->request->post['mpower_Token']) {
        $this->error['Token'] = $this->language->get('error_Token');
    }

    return !$this->error;
    }
}

Line number 213 is :

$data['header'] = $this->load->controller('common/header');

I have not been completed developing the module fully but almost done with the admin side of the payment module but it is giving error so if anyone can please have a look and let me know that what I am doing wrong please?

Upvotes: 2

Views: 9381

Answers (2)

Amar Panchal
Amar Panchal

Reputation: 31

I encountered the same problem, and discovered that I was using a 2.0.X.X module in opencart version 1.5.X.X. You may simply be using the wrong version of the module.

Upvotes: 1

Hardik Solanki
Hardik Solanki

Reputation: 3195

Here is your code after line no 213:

Replace this code:

$data['header'] = $this->load->controller('common/header');
$data['column_left'] = $this->load->controller('common/column_left');
$data['footer'] = $this->load->controller('common/footer');

$this->response->setOutput($this->load->view('payment/mpower.tpl', $data));

With

$this->template = 'payment/mpower.tpl';
    $this->children = array(
        'common/header',
        'common/column_left',
        'common/footer'
    );

    $this->response->setOutput($this->render());

No need to call controller for header, footer and etc.

And also no need to pass $data in setOutput, it will automatically pass in your view file when you are load your payment gateway link in browser because of it will call your index method by default.

Upvotes: 2

Related Questions