我的 admin.php 控制器中有类似的内容:
function __construct()
{
parent::__construct();
if (!$this->session->userdata('logged_in_admin') )
{
redirect('admin/login');
}
$this->load->model('mdl_admin');
$data['my_test_variable'] = "This is test!";
}
public function index()
{
$data['header'] = "Home";
$this->load->view('admin_frontpage', $data);
}
在我看来:
<?php echo $header; ?>
<?php echo $my_test_variable; ?>
但只回显标头变量。即使发送到视图文件的$ data数组也包含 my_test_variable 。
为什么?
我做错了什么?
即使我尝试例如:
$this->data['my_test_variable'] = "This is test!";
它不起作用。
答案 0 :(得分:2)
但是发送到视图的$data
数组也不包含my_test_variable
。在index()
函数中,您不会在将其发送到视图时设置该值。
在__construct()
中,$data
是仅在__construct()
函数中可见的局部变量。如果你想在函数外部访问它,可能在index()
函数中,一个选项是使它成为一个实例属性。
例如,代替$data['my_test_variable']
,您可以使用$this->data['my_test_variable']
,然后再次index()
,而不是$data
,您可以使用$this->data
答案 1 :(得分:2)
通过视图传递您的数据
function __construct()
{
parent::__construct();
if (!$this->session->userdata('logged_in_admin') )
{
redirect('admin/login');
}
$this->load->model('mdl_admin');
}
public function index()
{
$data['header'] = "Home";
$data['my_test_variable'] = "This is test!";
$this->load->view('admin_frontpage', $data);
}
试试这个......
答案 2 :(得分:1)
首先,你是在PHP中隐式创建变量 - 这是不好的做法。您不应该在不存在的变量中设置数组键。启用正确的错误报告设置后,这将导致您遇到问题。
首先,让我们解决这个问题:
function __construct() {
parent::__construct();
if (!$this->session->userdata('logged_in_admin')) {
redirect('admin/login');
}
$this->load->model('mdl_admin');
$data = array();
$data['my_test_variable'] = "This is test!";
}
public function index() {
$data = array();
$data['header'] = "Home";
$this->load->view('admin_frontpage', $data);
}
而且,在这样做的过程中,我认为你应该能够立即看到你的问题。 __construct()
和index()
方法使用不同的堆栈执行。这意味着你声明 in 的变量对另一个不可用。为了完成这项工作,你需要做的就是利用你正在创建的类的实例变量,如下所示:
class MyView {
protected $data = array();
function __construct() {
parent::__construct();
if (!$this->session->userdata('logged_in_admin')) {
redirect('admin/login');
}
$this->load->model('mdl_admin');
$this->data['my_test_variable'] = "This is test!";
}
public function index() {
$this->data['header'] = "Home";
$this->load->view('admin_frontpage', $this->data);
}
}
现在你应该得到你想要的东西