从MY_Controller CodeIgniter访问变量

时间:2012-10-13 07:39:52

标签: codeigniter variables

正如我读过的文章一样,在我的应用程序的所有控制器中验证用户的最佳方法是扩展我自己的扩展CI_Controller的控制器

但我无法使其发挥作用。

我的members_controller扩展了我的MY_Controller

MY_Controller我有这段代码,只是为了测试我是如何利用它的。

<?php

class MY_Controller extends CI_Controller {

private $foo;

    function __construct() {
        parent::__construct();
        $this->foo = 'hello world again';
    }

}

members controller

<?php
class Members extends MY_Controller {
    function index() {
         $this->load->view('members');
    }
}

members view

我想访问我刚刚设置的这个变量,但我不知道如何。

我尝试像echo $foo一样回复它$this->foo

但是没有工作。非常感谢!!

4 个答案:

答案 0 :(得分:5)

您需要将变量传递给视图文件。

    <?php
    class Members extends MY_Controller {
        function index() {
             $data = array('foo' => $this->foo)
             $this->load->view('members', $data);
        }
    }

现在您可以在视图中引用$ foo。您可能需要将$ this-&gt; foo声明为protected。

您可以在http://codeigniter.tv/a-10/Extending-the-core-MY_Controller-and-beyond

找到有关MY_Controller的视频教程。

答案 1 :(得分:0)

您是否尝试将变量传递给'成员视图'。

$this->load->view('members',$foo);

答案 2 :(得分:0)

您需要将$foo设为受保护而非私有。 然后你就可以在扩展MY_Controller.php的控制器中访问它,如下所示: $this->foo

答案 3 :(得分:0)

今天我第一次使用codeigniter 3.过去我使用过2.x版本很多次。现在我不能扩展<script> $(document).ready(function () { $('.datetimepicker').datetimepicker({ format: 'lll' }); }); </script>

<强>应用/核心/ MY_Controller.php

CI_Controller

<强>应用/控制器/的welcome.php

class MY_Controller extends CI_Controller {

private $data = array();

function __construct() {
    parent::__construct();
    date_default_timezone_set("Europe/Zagreb");
    $this->data['foo'] = "bar";
}

<强>应用/视图/ home.php  (这是由class Welcome extends MY_Controller { public function index() { $this->data['main_content'] = 'home'; $this->load->view('template/template', $this->data); } 加载的视图)

如果我尝试回显$this->data['main_content']中声明的任何数据,我会收到错误。

MY_Controller