Перейти к содержанию
somebuddy

[Решено] в .tpl недоступны заголовки из контроллера

Рекомендуемые сообщения

доброго времени суток!

хочу разобраться с написанием модулей под опенкарт. для разминки решил выподнить следующий туториал по выводу простейшего блока с текстом и заголовком, прописанным в language: http://s-engineer.ru/sozdaem-modul-v-opencart/

теперь о самой проблеме. Все делал по туториалу и все заработало кроме заголовка $head_title, который по какой-то причине не виден из tpl-файла.

Код контролелера в \catalog\controller\module\myModul.php:

<?php
    class ControllerModuleMyModul extends Controller{
        protected function index(){
            if(file_exists(DIR_TEMPLATE.$this->config->get('config_template').'/template/module/test.tpl')){
                $this->template = $this->config->get('config_template').'/template/module/myModul.tpl';
            }else{
                $this->template = 'default/template/module/myModul.tpl';
            }
            $this->render();

        // подключение языкового файла
        $this->load->language('module/myModul');
        $this->data['head_title'] = $this->language->get('head_title');
        var_dump($this->data['head_title']);
        }
        
    }

?>

причем var_dump($this->data['head_title']); возвращает то, что я прописал в language. В туториале обещали, что в tpl-файле этот заголовок будет виден как $head_title

но следующий ниже код из файла \catalog\view\theme\default\template\module\myModul.tpl возвращает мне Undefined variable: head_title in C:\OpenServer\domains\opentest.loc\catalog\view\theme\default\template\module\myModul.tpl on line 2:

<div class="box">
    <div class="box-heading"><?php echo $head_title;?></div>
    <div class="box-content">Код модуля</div>
</div>

Объясните пожалуйста, что я делаю не так? А то все мозги себе проел

get_defigned_vars() в myModul.tpl возвращает пустой массив

 

Есть еще вопрос по поводу следующего кода в контроллере:

$this->template = $this->config->get('config_template').'/template/module/myModul.tpl';

Как я понимаю, здесь из класса ControllerModuleMyModul дергается объект config, но когда я захотел посмотреть что он из себя представляет, то не нашел никакого упоминания о нем в самом классе Controller. Может ли кто-нибудь пояснить откуда берется объект config?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Вы языковый файл подключаете ПОСЛЕ рендеринга, соответственно в шаблоне не видны языковые переменные. Нужно рендеринг делать в последнюю очередь, когда определены все переменные.

 

2. Откуда берется $this->config? 
Класс ControllerModuleMyModul наследует класс Controller (ControllerModuleMyModul extends Controller) соответственно наследует все паблик методы и элементы этого класса. Родительский класс Controller и предоставляет доступ к $config, которые находится в  реестре ($registry)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.