Я не могу получить доступ к данным из контроллера для просмотра (tpl = template) OpenCart - PullRequest
0 голосов
/ 01 февраля 2019

Не могу получить доступ к переменным данным из контроллера для просмотра (файл tpl шаблона) У меня есть очень простая функция

public function index() {
$message = "hello";
return $this->load->view('common/hello.tpl', $message );
} 


In view template i try to get $message variable but not defined

<?php echo $message; ?>

public function index() {
$message = "hello";
return $this->load->view('common/hello.tpl', $message );
} 

В шаблоне представления hello.tpl я пытаюсь получить переменную $ message, но она не определена

Это только пример.У меня есть модель, которая должна загружаться, но сейчас мне нужен только доступ из контроллера для просмотра .... Справка ..

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Сначала вам нужно опубликовать, какая версия OC используется ... Так что, если вы используете версию 1.x OC в файле контроллера, вы должны определить свои данные следующим образом: $this->data['message'] = 'hello'; и визуализировать tpl:

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/payment/hello.tpl')) {
            $this->template = $this->config->get('config_template') . '/template/payment/hello.tpl';
        } else {
            $this->template = 'default/template/payment/hello.tpl';
        }   

        $this->render(); 

если вы используете версию 2 или выше, вы должны определить: $data['message'] = 'hello'; и визуализировать в tpl lik:

return $this->load->view('extension/payment/hello', $data);

В tpl получить данные: <?php echo $message: ?> если OC версии 3.xx, где используются шаблоны веток... получить данные {{ message }}.

Это очень просто, если вы просто посмотрите, как это работает в соответствующей версии OC.

Так что для OC2.3, как вы определили, должен быть: файл контроллера hello.php:

<?php
class ControllerCommonHello extends Controller {
    public function index() {

    $data['hello'] = 'Hello!!!';

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

        $this->response->setOutput($this->load->view('common/hello', $data));
    }
}

hello.tpl файл примерно такой:

?php echo $header; ?>
<div class="container">

 <?php echo $hello; ?>


</div>
<?php echo $footer; ?>
0 голосов
/ 01 февраля 2019

В данном коде шаблон не имеет возможности узнать что-либо о переменной с именем $message, поскольку вы передаете только значение этой переменной.Согласно другому потоку SO , вы должны добавить эту переменную в массив, подобный $data, например:

$data['message'] = $message;

Это делает содержимое $message доступным под тем же именем в вашемшаблон.Если вы измените ключ (например, на $data['otherKey']), он станет доступен в $otherKey

. Затем передайте этот массив значений в метод view:

return $this->load->view('common/hello.tpl', $data );
...