Jump to content
Sign in to follow this  
somebuddy

[Решено] в .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?

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.