0

我的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!";

它不工作。

4

3 回答 3

2

但是$data发送到视图的数组也不包含my_test_variable。在index()函数中,您在将其发送到视图时并未设置该值。

In __construct(),$data是仅在__construct()函数内可见的局部变量。如果您想在函数之外访问它,也许在index()函数中,一种选择是将其设为实例属性。

例如$data['my_test_variable'],您可以使用$this->data['my_test_variable'], then, in index(), again 代替 , 代替$data, 您可以使用$this->data.

于 2013-03-08T13:47:43.790 回答
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);
         }

试试这个....

于 2013-03-08T14:09:03.287 回答
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()堆栈执行。这意味着您其中一个声明的变量对另一个不可用。为了使这项工作,您必须做的是利用您正在创建的类的实例变量,如下所示:

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);
    }
}

现在你应该得到你所追求的

于 2013-03-08T13:47:25.260 回答