在我的名为Profile_model
的模型中,我有这个函数来检索登录用户的配置文件数据。
function profile_read()
{
$this->db->where('user_id', $this->tank_auth->get_user_id());
$query = $this->db->get('user_profiles');
$data['row'] = $query->row();
}
在我的控制器中,我正在使用$this->load->view('profile/edit_general_view', $data);
尝试将模型中的数据加载到视图中。
function edit_profile()
{
//validation rules
$this->form_validation->set_rules('first_name', 'First Name', 'trim|required|xss_clean|min_length[2]|max_length[20]|alpha');
$this->form_validation->set_rules('last_name', 'Last Name', 'trim|required|xss_clean|min_length[2]|max_length[20]|alpha');
if ($this->form_validation->run() == FALSE) //if validation rule fails
{
$this->load->view('profile/edit_general_view', $data); //load data from model in view
}
else //success
{
$send_to_db = array (
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name')
);
$seg = 'edit';
$this->load->model('Profile_model');
$this->Profile_model->profile_update($send_to_db, $seg);
}
}
将数据从模型函数profile_read
传递到控制器函数的正确方法是什么?
答案 0 :(得分:3)
阅读变量范围的时间: http://php.net/manual/en/language.variables.scope.php
控制器无法访问模型方法中的$ data变量。让模型方法返回一个实际的数据数组。例如:
function profile_read()
{
$this->db->where('user_id', $this->tank_auth->get_user_id());
$query = $this->db->get('user_profiles');
return ($query ? $query->row : FALSE);
}
然后在控制器中,将其存储在视图的“数据”中。