2012-01-16 81 views
0

我正在使用codeigniter会话类(自动加载)。我如何设置初始化值?我需要这个,因为我想初始化默认语言。如何初始化codeigniter会话数据?

最好的问候......

+0

http://codeigniter.com/user_guide/libraries /sessions.html – 2012-01-16 14:51:13

+0

我知道用户指南。但是,如果我通过自动加载使用它,在哪里设置会话的初始值?我不想在每个控制器中初始化它们! – fillibuster 2012-01-16 15:02:59

+0

啊,我以前不明白这个问题。我现在得到你想要的东西。你可以使用钩子来做到这一点。请给我一点时间写一个答案。 – 2012-01-16 15:16:56

回答

3

要加载的数据初始化到会话中,你可以使用hooks

您可以使用post_controller_constructor钩子(在pre_controller钩子中,会话可能尚未加载)。

打开了config/hooks.php和补充一点:

$hook['post_controller_constructor'][] = array(
           'class' => 'SessionData', 
           'function' => 'initializeData', 
           'filename' => 'SessionData.php', 
           'filepath' => 'hooks', 
           'params' => array() 
           ); 

然后在hooks文件夹制作一个名为SessionData.php包含以下内容:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 

class SessionData{ 
    var $CI; 

    function __construct(){ 
     $this->CI =& get_instance(); 
    } 

    function initializeData() { 
      // This function will run after the constructor for the controller is ran 
      // Set any initial values here 
      if(!$this->session->userdata('language')){ 
      $this->CI->session->set_userdata('language', 'English'); 
      } 
    } 
} 
?> 
+0

很好,谢谢 – fillibuster 2012-01-16 15:40:04

+0

不客气:-) – 2012-01-16 15:41:20