老实说,我一直在寻找很长时间,但找不到我做错了什么。
目标:向下传递变量并对其进行更新
- 我想声明应用程序范围的默认页面标题:
类 MY_Controller 扩展CI_Controller {
public $data = [];
function __construct() {
parent::__construct();
$this->data['pageTitle'] = 'deault';
}
}
- 然后我想根据正在使用的控制器重写它:
类 Post 扩展MY_Controller {
public function __construct() {
parent::__construct();
$this->data['pageTitle'] = 'Posts';
}
}
并在控制器的函数中明确声明它的名称:
公共函数 show(( {
//get global data $data = $this->data; $this->data['pageTitle'] = 'My page title'; $this->load->view('view1', $data);
}
我希望的最终结果="我的页面标题">
我得到的最终结果="默认">
请给出一个建设性的答案,以便我了解这里出了什么问题?
错误的原因似乎是您正在更改$this->data
但将$data
发送到视图。
可能的解决方案 1(你想使用这个(
public function show() {
//get global data
$data = $this->data;
$data['pageTitle'] = 'My page title'; //change $data array
$this->load->view('view1', $data); // send $data
}
可能的解决方案 2
public function show() {
//get global data
$data = $this->data;
$this->data['pageTitle'] = 'My page title'; //change $data array
$this->load->view('view1', $this->data); // send $this->data
}
结果(查看(
<?php echo $pageTitle; ?> // returns 'My page title'
希望对您有所帮助。