CodeIgniter将多个数组从控制器传递到视图

时间:2013-01-03 02:31:26

标签: php codeigniter undefined

  

可能重复:
  PHP: “Notice: Undefined variable” and “Notice: Undefined index”

我正在尝试将会话数据和数据库查询传递给Codeigniter中的视图。我的视图文件中出现错误:'消息:未定义的变量:数据'

问题在于$ idea变量。变量注册一个未定义的错误。

控制器:

public function members() {

    if($this->session->userdata('is_logged_in')){
        $session = $this->session->all_userdata();
        $facebook_id = $data['id']; 


        $this->load->model('idea'); 
        $idea = $this->idea->get_idea($facebook_id); 

        //merge the two arrays to get data variable
        $data = $session + $idea; 
        $this->load->view('members', $data); 
    } else {
        redirect('main/login'); 
    }
}

型号:

public function get_idea($facebook_id) {
    $data = array(
        'id' => '', 
        'idea' => '', 
        'facebook_id' => $facebook_id
    );

    $query = $this->db->get('idea', $facebook_id); 

    return $query->result_array(); 

}

以下是我使用的一些资源:
- Creating foreach loops using Code Igniter controller and view
- codeigniter: pass array from controller to view
- http://blog.mattheufarmer.com/2010/building-a-website-in-codeigniter-part-ii-getting-data-and-using-it/

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

$data = $session + $idea; 

没有。就是不行。这不是你合并数组的方式。

更干净,更周到的方法来做你想做的事情:

$data = array( $session, $idea );

否则,

$data = array_merge($session, $idea);

编辑:

您应该阅读此http://ellislab.com/codeigniter/user-guide/general/views.html

无论如何,除非你做一些完全愚蠢的事情,否则你应该能够做到这一点:

$data = array( 'sesssion' => $sesssion, 'idea' => $idea ); 

并将其传递给您。然后在您的视图中,您可以使用$ session调用会话,并使用$ idea调用。举例说明:

$data = array('name' => 'josh', 'sex' => 'often');
$this->load->view('welcome', $data);

然后在我看来:

<? echo "$name has sex $sex"; // returns josh has sex often ?>

在视图中,键成为变量,值由这些变量($ data中的键)访问。您不会拨打$ data,而是拨打密钥。

$data = array('key' => 'value');

如果您有任何其他问题,请告诉我。 :)

答案 1 :(得分:3)

你可以这样做 -

public function members() {

    if($this->session->userdata('is_logged_in')){
        $data['session'] = $this->session->all_userdata();
        $facebook_id = $data['id']; 


        $this->load->model('idea'); 
        $data['idea'] = $this->idea->get_idea($facebook_id); 

        $this->load->view('members', $data); 
    } else {
        redirect('main/login'); 
    }
}