无法从控制器访问变量数据到视图(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进行访问即可。...帮助..
答案 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; ?>