模型中的Codeigniter和Set Session

时间:2014-01-19 06:34:49

标签: codeigniter session model

我想取消设置并在模型函数中设置会话取决于传递的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;
        }

    }

2 个答案:

答案 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()将无法正常工作。