【问题标题】:Why is $this->data not sending to view, but $data is in CodeIgniter?为什么 $this->data 没有发送到视图,但 $data 在 CodeIgniter 中?
【发布时间】:2013-03-08 14:07:33
【问题描述】:

这是发送数据以在 CodeIgniter 中查看:

    public function index()
    {           
        $data['header'] = "Home";
        $this->load->view('admin_frontpage', $data);
    }

这不是:

    public function index()
    {
        $this->data['header'] = "Home";
        $this->load->view('admin_frontpage', $this->data);
    }

为什么?

在我的视图文件中,我尝试回显:

    <?php echo $header; ?>

但只有在使用 $data 时才会回显。在控制器中使用 $this->data 时,没有任何回显。

我做错了什么?

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    很可能是$this-&gt;data 未定义。

    你需要在你的类中定义一个数据成员

    private $data;
    

    并用

    初始化它
    $this->data = array();
    

    或一次性

    private $data = array();
    

    详情请参阅Classes and ObjectsProperties

    【讨论】:

    • 我需要把这段代码放在控制器中的构造函数之前吗?
    • 可以放在index()方法的顶部
    • @Derfder 你可以把它放在你的类定义中index()方法之前。
    • 我收到解析错误:语法错误,意外的“公共”(T_PUBLIC)
    • @Derfder 如果您创建成员private,则只有属于该类的方法才能访问和修改它。这封装了对象的状态,外部的任何方法都不能意外修改它。有关更多信息,请参阅此问题和答案stackoverflow.com/q/985298/1741542Wikipedia - Information hiding
    【解决方案2】:

    $this-&gt;data 未在您的控制器中定义。请记住,当前页面不记得 $data 数组的名称。每个变量都被实例化为一个单独的变量,就像您将数据数组传递给'admin_frontpage'时,数组被剥离并且数组的每个元素都被实例化为一个变量(即$this-&gt;data['header']变成@987654324 @)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 2014-05-04
      • 2021-05-17
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多