首页 文章

CodeIgniter从控制器传递多个数组到视图[重复]

提问于
浏览
1

可能重复:PHP:“注意:未定义的变量”和“通知:未定义的索引”

我正在尝试将会话数据和数据库查询传递给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(); 

}

以下是我使用过的一些资源:

感谢您的帮助!

2 回答

  • 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'); 
        }
    }
    
  • 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');
    

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

相关问题