我想取消设置并在模型函数中设置会话取决于传递的id
我有每个记录的语言字段,并应考虑到这一点改变会话
在示例中,我有一个这样的链接:http://www.mysite.com/report/2020
现在这个id的这篇文章可能用英语保存,但是当前的会话是法语。所以我应该改变会话。
这是我的代码,但它不起作用。
//function for checking language by id
public function lang($id)
{
$data = $this->db
->select('language')
->from('content')
->where('id',$id)
->get();
if ($data->num_rows > 0) {
return $data;
}else{
return false;
}
}
//function for reading data from db depend on id and language
public function report($id)
{
$cat=2;
$code=$id;
$langu= $this->lang($id)->row()->language;
if($langu==3){
$this->session->unset_userdata('lang');
$this->session->set_userdata('lang','dr');
}
if($langu==2){
$this->session->unset_userdata('lang');
$this->session->set_userdata('lang','pa');
}
if($langu==1){
$this->session->unset_userdata('lang');
$this->session->set_userdata('lang','en');
}
$language= $this->session->userdata('lang');
$lang=$language;
$data = $this->db
->select('*')
->from('content')
->where('category',$cat)
->where('language',$lang)
->where('id',$code)
->get();
if ($data->num_rows > 0) {
return $data;
}else{
return false;
}
}
答案 0 :(得分:8)
会话的最佳方式是:
你必须检查模型中的查询,并在控制器中调用模型,如果它在控制器中的真实设置会话数据....
对于 MVC 架构,模型中的设置会话不是一个好主意。
答案 1 :(得分:0)
有时确实需要在模型中设置或获取会话数据。 然后使用代码点火器实例,如下所示:
$codeIgniter =& get_instance();
$codeIgniter->set_userdata('data', $data);
// or to read data:
$data = $codeIgniter->userdata('data');
请注意,使用$ this在模型中调用set_userdata()或userdata()将无法正常工作。