2014-03-31 107 views
2

我會需要使用域,並把它在一個會議上,以獲取一些數據從數據庫中設置/檢查會話。我可以在默認的控制器,與沒有問題做到這一點。 問題是,當人們直接鏈接到像一個特定的控制器:www.mywebsite/myController的/ myfunction的。笨 - 在每一個控制器功能

當他們通過該鏈接進入網站,我不從域中設置會話,我會得到一些錯誤。

所以我的問題是: 是否有人有一個解決方案,以檢查/在每個域中的每個功能設置這個會議?

提前致謝!

+1

你能不能把一些邏輯內的構造? – Zabs

回答

4

你可以用一個鉤子:http://ellislab.com/codeigniter/user-guide/general/hooks.html

或者你可以把你的小腳本到您的控制器的結構。

function __construct() 
{ 
    parent::__construct(); 
    //Put your code here, you can also load your models and stuff 
    //$this->load->model("user_model","user"); 
    //Code code code 
} 

這裏是國際化(語言模塊)掛鉤的例子 - 在應用程序/鉤創建文件/ my_hook.php

function setUserLang() 
{ 
//Getting the language of the user 
//If nothing was found, stick with English 
$ci =& get_instance(); 
if(!$ci->session->userdata('lang')){ 
    $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); 
    switch ($lang){ 
     case "fr": 
      $ci->session->set_userdata('lang','french'); 
      break; 

     case "en": 
      $ci->session->set_userdata('lang','english'); 
      break; 

     default: 
      $ci->session->set_userdata('lang','english'); 
      break; 
    } 
} 
} 

,轉到應用程序/配置/掛鉤。 PHP和添加類似的東西:

$hook['post_controller_constructor'][] = array(
      'class'  => '', 
      'function' => 'setUserLang', 
      'filename' => 'my_hook.php', 
      'filepath' => 'hooks' 
      ); 
+1

+1這是我也會這樣做的方式 – Zabs

+1

掛鉤對我來說是新東西,但它似乎是一個完美的解決方案..非常感謝! –

+0

雅知道,鉤子,我在與CI合作多年的時候並沒有多少探索。我實際上有一個基本控制器,它運行一個自定義構建的'preDispatch'函數,它可以執行我需要的任何操作。不過,我認爲我應該考慮將這些邏輯放入鉤子中。 – Donovan