我无法从控制器访问数据以查看(tpl = template)OpenCart

时间:2019-02-01 12:50:12

标签: php opencart

无法从控制器访问变量数据到视图(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变量,但未定义

这仅是示例。我有必须加载的模型,但是现在我只需要从Controller到View进行访问即可。...帮助..

2 个答案:

答案 0 :(得分:0)

在给定的代码中,模板没有机会知道有关名为$message的变量的任何信息,因为您只传输该变量的。根据{{​​3}},您应该向该变量添加像$data这样的数组:

$data['message'] = $message;

这将使$message的内容在模板中具有相同的名称。如果您更改密钥(例如,更改为$data['otherKey']),它将在$otherKey

下可用

然后,将该值数组传输到view方法:

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

答案 1 :(得分:0)

首先,您需要发布正在使用的OC版本......因此,如果在控制器文件中使用OC版本1.x,则应按以下方式定义数据: $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.x.x在哪里使用了树枝模板... 检索数据{{ 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; ?>