为什么聪明不考虑会话变量?

时间:2012-10-15 13:32:18

标签: php codeigniter smarty

为什么smarty 3不考虑codeIgniter会话变量:

$this->session->set_userdata('userId', $res['id']);  // this doesn't work 

$_SESSION['userId']=$res['id']; // this works.

我正在巧妙地访问这个:

{$smarty.session.userId}  

3 个答案:

答案 0 :(得分:3)

CI(!!!)不使用PHP超全局$ _SESSION ...

在这里阅读一个很好的方式,将CI的会话暴露给Smarty。

http://ellislab.com/codeigniter/forums/viewthread/110540/#571279

答案 1 :(得分:0)

在codeIgniter

$this->session->set_userdata()

函数将数据保存在cookie中,因此无法按会话获取数据。

答案 2 :(得分:0)

你可以这样做:

  1. 在你的控制器中:

    $数据['会话'] = $这 - >会话而>用户数据;
    $ this-> smarty_parser->解析(" smarty.php",$ data);

  2. 或者,如果您每次都不想在控制器中执行此操作,则可以将其移至智能包装类中。

    1. 在这样聪明的包装器(smarty_parser.php)中:

      函数解析($ template,$ data,$ return = FALSE)     {
              if($ template =='')返回FALSE;         $ CI =& get_instance();

          /* here it goes */
          $data['session']=$CI->session->userdata;
      
      
         ...
      } 
      
    2. 然后,您可以使用

      访问模板中的所有会话数据
      {$session.session_id}