Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

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

хочу разобраться с написанием модулей под опенкарт. для разминки решил выподнить следующий туториал по выводу простейшего блока с текстом и заголовком, прописанным в 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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.