Bahrami-Reza
Bahrami-Reza

Reputation: 608

Codeigniter and Set Session in Model

I want to unset and set session in model function depend on passed id.
I have language field for every record and should change session considering that.
in sample word i have a link like this : http://www.mysite.com/report/2020
now this article by this id maybe saved by english language but current session is french.so I should change the session. here is my code but it dos not work.

  //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;
        }

    }

Upvotes: 5

Views: 11007

Answers (2)

Infor Mat
Infor Mat

Reputation: 117

Sometimes there is really need to set or get session data in model. Use then Code Igniter instance like below:

$codeIgniter =& get_instance();
$codeIgniter->set_userdata('data', $data);
// or to read data:
$data = $codeIgniter->userdata('data');

Note that using $this to call set_userdata() or userdata() in model will not work correctly.

Upvotes: 0

Adarsh M Pallickal
Adarsh M Pallickal

Reputation: 821

the best way to session is:

you have to check the query in model, and call the model in controller, if its true set session data within controller....

Setting Session within the model is not a good idea for an MVC architecture.

Upvotes: 9

Related Questions