2014-01-19 80 views
4

我想取消設置會話並在模型函數中依賴於傳遞的ID。
我有每個記錄的語言字段,並且應該考慮這個更改會話。
in sample word我有這樣的一個鏈接:http://www.mysite.com/report/2020
現在這篇文章的這個ID也許保存英語,但當前會話是法語。所以我應該改變會議。 這是我的代碼,但它沒有工作。
Codeigniter和設置會話模型

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

你用上面的代碼得到了什麼?有什麼錯誤? –

+0

看起來親愛的Mr.Kumar_v,當有人打開我的網站會話設置爲英文,但如果有人直接把這個網址:www.mysite.com/report/2020,我應該參考這取決於語言,應改變會議,但上面的代碼dosnt工作,只顯示空白頁! –

+0

只需調試您的代碼。 'echo $ lang = $ language;'現在你會將wat當前的語言。錯誤報告在CI中啓用? –

回答

8

會話的最好辦法是:

你必須檢查在模型中的查詢,並調用控制器的型號,如果控制器內的真實組會話數據....

設置會話模型是不是一個好主意的MVC架構。

0

有時真的需要在模型中設置或獲取會話數據。 使用則代碼點火器例如象下面這樣:

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

注意,在模型中使用$此調用set_userdata()或用戶數據()將無法正常工作。