1

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

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

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

我在 smarty 中访问它:

{$smarty.session.userId}  
4

3 回答 3

3

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

在此处阅读有关将 CI 的会话公开给 Smarty 的好方法。

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

于 2012-10-15T13:42:57.073 回答
0

在代码点火器中

$this->session->set_userdata()

功能将数据保存在cookie中,因此您无法通过会话获取数据。

于 2012-10-15T13:36:15.600 回答
0

你可以这样做:

  1. 在你的控制器中是这样的:

    $data['session']=$this->session->userdata;
    $this->smarty_parser->parse("smarty.php", $data);

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

  1. 在您的 smarty 包装器 (smarty_parser.php) 中,如下所示:

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

        /* here it goes */
        $data['session']=$CI->session->userdata;
    
    
       ...
    } 
    

然后,您可以使用模板访问所有会话数据

{$session.session_id} 
于 2014-10-29T13:54:43.930 回答