[Решено] Модули ПриватБанка Fatal error

Тема в разделе "OpenCart", создана пользователем PoTBeJIJIePP, 14 май 2016.

Метки:
Статус темы:
Закрыта.
  1. PoTBeJIJIePP

    PoTBeJIJIePP

    Регистрация:
    15 апр 2016
    Сообщения:
    45
    Симпатии:
    29
    Всем привет!

    Скачал официальные модули от Приватбанка Украина, установил.

    При попытке входа в настройки вылазит одна и таже ошибка для всех модулей:

    Fatal error: Call to undefined method ControllerPaymentPrivatbankPaymentpartsIi::render() in .../admin/controller/payment/privatbank_paymentparts_ii.php on line 238

    Строчка на которую ссылается ошибка:

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

    Подскажите, пожалуйста, что оно хочет от меня? ))))

    Спасибо!
     
  2. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.053
    Симпатии:
    779
    У вас несовместимость версий.
    Что и откуда вы качали и какая у вас версия ОК?
     
  3. PoTBeJIJIePP

    PoTBeJIJIePP

    Регистрация:
    15 апр 2016
    Сообщения:
    45
    Симпатии:
    29
    Версия ocStore 2.1.0.2.1
    Качал здесь:
     
  4. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.053
    Симпатии:
    779
    Хм, похоже, там неправильно указаны версии совместимости. В ОК 2 изменён механизм рендера шаблонов и отделён от контроллера.
    Если в модуле есть такая строка:
    PHP:
    $this->response->setOutput($this->render());
    Значит он рассчитан под ветку 1.5.

    Дополнение: я глянул код файла возле ошибки
    PHP:
    switch(VERSION){
                case 
    '2.1.0.2':
                case 
    '2.1.0.1':
                case 
    '2.2.0.0_a1':
                case 
    '2.0.3.1':
                case 
    '2.0.2.0':
                case 
    '2.0.1.1':
                case 
    '2.0.1.0':
                case 
    '2.0.0.0':
                    
    //set commom elements of view
                    
    $this->data['header'] = $this->load->controller('common/header');
                    
    $this->data['column_left'] = $this->load->controller('common/column_left');
                    
    $this->data['footer'] = $this->load->controller('common/footer');
                    
    //render template           
                    
    $this->response->setOutput($this->load->view($this->template$this->data));
                  break;
                default:
                  
    $this->response->setOutput($this->render());
                  break;           
            }
    Вы б могли и сами догадаться, как исправить проблему.
    Тут костыль для разных версий, а ваша версия просто не определилась из-за пятой цифры в номере. Надо её дописать в условие и всё должно заработать.

    А вообще, модуль явно изначально писался под 1.5.
     
  5. PoTBeJIJIePP

    PoTBeJIJIePP

    Регистрация:
    15 апр 2016
    Сообщения:
    45
    Симпатии:
    29
    Спасибо, большое!
    Добавил в список свою версию ОК и все заработало.
    P.s. Плюсовать пока не могу, а так + в карму!!! :wink:
     
  6. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.053
    Симпатии:
    779
    Только учтите, что там такой костыль есть и в других файлах этого модуля. Так что ошибка может ещё возникать.
    Думаю, лучше всего и для этого модуля и на будущее просто в index.php (в корне и в admin) в константе VERSION удалить пятую цифру в номере версии, потому что подобная история будет повторяться каждый раз, когда какой-то модуль будет определять версию (в нумерации оригинального ОК не используется пятая цифра - это уже в сборках добавлено).
     
Статус темы:
Закрыта.