Codeigniter将数据从控制器传递到视图

时间:2011-06-06 20:34:35

标签: php codeigniter view

根据here我有以下控制器:

class User extends CI_Controller {
    public function Login()
    {
        //$data->RedirectUrl = $this->input->get_post('ReturnTo');
        $data = array(
               'title' => 'My Title',
               'heading' => 'My Heading',
               'message' => 'My Message'
          );
        $this->load->view('User_Login', $data);
    }

    //More...
}

并在我的User_Login.php视图文件中执行此操作:

<?php print_r($data);?>

导致:

A PHP Error was encountered
Severity: Notice
Message: Undefined variable: data
Filename: views/User_Login.php
Line Number: 1

我是否需要加载任何特定的模块/帮助程序来填充$ data变量?如果我print_r($this),我可以看到很多东西,但除了缓存

之外我没有看到任何数据

编辑:为了澄清,我知道在控制器和视图中调用相同的变量不会“共享”它 - 它超出范围但在我链接的示例中,它似乎意味着$data变量是在视图范围内创建的。我只是碰巧在控制器中使用相同的名称

6 个答案:

答案 0 :(得分:9)

啊,$data数组的键被转换为变量:例如,尝试var_dump($title);

编辑:这是使用extract完成的。

答案 1 :(得分:6)

你应该这样做:

echo $title ;
echo $heading;
echo $message;

答案 2 :(得分:4)

或者你可以像数组一样使用它。 在控制器中:

...
$this->load->view('User_Login', array('data' => $data));
...

在视图中:

<?php print_r($data);?>

将显示数组([title] =&gt;我的标题[标题] =&gt;我的标题[消息] =&gt;我的消息)

答案 3 :(得分:1)

您可以将网址中的变量传递给

function regresion($value) {

    $data['value'] = $value;
    $this -> load -> view('cms/template', $data);
}

在视图中

<?php print_r($value);?>

答案 4 :(得分:0)

你不能打印变量$ data,因为它是一个关联数组....你可以打印关联数组的每个元素.....考虑下面的例子。

不要这样做:

echo $data;

请执行以下操作:

echo $title;   
echo $heading;    
echo $message;   

答案 5 :(得分:0)

从控制器发送数据到视图时,我们将其传递到数组中,并且该数组的键由代码codeigniter制成变量,并可以在视图文件中访问。

在您的代码下方,所有键都将成为User_Login.php中的变量

class User extends CI_Controller {
    public function Login()
    {
        $data = array(
               'title' => 'My Title',       //In your view it will be $title
               'heading' => 'My Heading',  //$heading
               'message' => 'My Message'  //$message
          );
        $this->load->view('User_Login', $data);
    }

}

,在您的User_Login.php视图中,您可以像这样访问它们:

echo $title;
echo $heading;
echo $message;