我有一个查看器辅助函数,可以在页脚/页眉旁边加载主要内容。当我为主要内容视图中的变量加载相同名称的标题的数组键时,发生错误/意外行为 - 为标题和主要内容加载了相同的数组。
我认为这很正常,因为相同的$data
数组也被发送到标题和主要内容(如前所述)。所以变量自然会出现在两个视图中。但是,好吧,情况并非完全如此。我$data
在将数据发送到标头后取消设置变量,然后在我想将一些数据发送到主视图时重新创建它 - 但问题仍然没有解决。
我为这个错误/意外行为做了一个简单的例子:
考虑这个视图,命名为test
:
<?php
echo $some_data;
而这个控制器:
class Test extends CI_Controller {
function index() {
$data['some_data'] = 'Some data.';
$this->load->view('test', $data);
/*
* Output:
* Some data.
*/
unset($data);
unset($data['some_data']);//Just to make sure it's not PHP's fault.
$this->load->view('test');
/*
* Output:
* Some data.
*
* Even though the $data variable is unsetted AND not passed!
*/
$different_data = array();
$this->load->view('test', $different_data);
/*
* Output:
* Some Data.
*
* Still outputs the same thing, even though
* I'm sending different array(and the $data array is unstted).
*
*/
}
}
注意:整个代码会输出Some data.
三遍。
解决此问题的唯一方法是发送一个不同的数组并将数组键(即some_data
)设置为其他将覆盖旧数组的键。
那么,这是一个错误还是 CodeIgniter 的家伙制造的东西?