可能重复:
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/
感谢您的帮助!
答案 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');
}
}