0

正如我通读的文章,在我的应用程序的所有控制器中验证用户的最佳方法是扩展我自己的控制器,该控制器扩展了 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

4 回答 4

5

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

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

现在你可以在你的视图中引用 $foo 了。您可能需要将 $this->foo 声明为受保护。

有一个关于 MY_Controller 的视频教程,您可能会在http://codeigniter.tv/a-10/Extending-the-core-MY_Controller-and-beyond找到有用的

于 2012-10-13T13:45:30.523 回答
0

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

$this->load->view('members',$foo);
于 2012-10-13T07:52:19.690 回答
0

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

于 2014-10-22T22:51:53.483 回答
0

今天我第一次使用codeigniter 3。过去我用了很多次2.x版本。现在我不能扩展CI_Controller

应用程序/核心/MY_Controller.php

class MY_Controller extends CI_Controller {

private $data = array();

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

应用程序/控制器/Welcome.php

class Welcome extends MY_Controller {

public function index() {
    $this->data['main_content'] = 'home';
    $this->load->view('template/template', $this->data); 
}

application/view/home.php (这是由 加载的视图$this->data['main_content']

如果我尝试回显 中声明的任何数据MY_Controller,我会收到错误消息。

    <?php echo $foo; ?>

A PHP ERROR WAS ENCOUNTERED

Severity: Notice

Message: Undefined variable: foo

Filename: template/header.php
于 2015-11-24T19:14:41.600 回答