Codeigniter 数据没有从控制器传递到视图 [重复]

Posted

技术标签:

【中文标题】Codeigniter 数据没有从控制器传递到视图 [重复]【英文标题】:Codeigniter data not being passed from controller to view [duplicate] 【发布时间】:2013-07-30 20:14:22 【问题描述】:

我已经设置了一个 codeigniter 环境。我能够将数据从欢迎控制器传递到视图,但我创建了一个名为 TestController 的新控制器,但我无法将数据传递到我的测试视图。它说未定义的变量。

遇到了 php 错误

严重性:通知

消息:未定义变量:数据

文件名:views/gallery.php

行号:4

控制器

<?php

class Testcontroller extends CI_Controller 


    // --------------------------------------------------------------------

    /**
     *  The constructor
     */
    function __construct()
    
        parent::__construct();  



    


    function index() 


    $data = array('title' => 'My Title',
              'heading' => 'My Heading',
              'message' => 'My Message');

$this->load->view('test', $data);

    


?>

测试视图

<?php   var_dump($data); ?> 

【问题讨论】:

你研究过你的问题吗?这似乎是相当基本的。 这类基本问题可以关注codeigniter documentation。 【参考方案1】:

$data 在视图中不存在。相反,给定数组$data 中的每个键都有一个变量。因此,在您的情况下,您有 $title$heading$message

请记住,传递的数据可能是匿名数组:

$this->load->view('test', array('title' => 'My Title',
              'heading' => 'My Heading',
              'message' => 'My Message'));

【讨论】:

【参考方案2】:

您不需要访问视图中的$data 数组。直接访问密钥:

var_dump($title);

【讨论】:

我明白了,但为什么我不能转储整个 $data 数组以查看其内容? $data 在控制器方法中仅作为局部变量存在。 如果您想将所有数据放在一个变量中,请使用:$data['entire_data'] = array('title' =&gt; 'My title', 'heading' =&gt; 'My Heading');【参考方案3】:

在视图中你可以这样打印:

<?php echo $title; ?>
<?php echo $heading; ?>
<?php echo $message; ?>

【讨论】:

【参考方案4】:

快速提示 -- 不要在控制器或模型中包含结束 php 标记!

 // bracket that closes class

 // NO NO NO
?>  

可能会弄乱文件。控制器或模型应以类右括号结束。 如果你愿意,可以发表评论

 // heres a comment and its ok

而在您的视图文件中 - 始终关闭您的 php 代码。

【讨论】:

跟题有什么关系? 看他的代码示例。

以上是关于Codeigniter 数据没有从控制器传递到视图 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将数组数据从视图传递到控制器并反向 php codeigniter

codeigniter 将数据从视图传递到模型并检索信息

CodeIgniter:将参数从视图传递到控制器?

将变量从视图传递到视图 codeigniter

显示从控制器传递的表(视图)中的数据 - Codeigniter

在 codeigniter 中,如何将数组值从控制器传递到同一视图页面?