为什么 smarty 3 不考虑 codeIgniter 会话变量:
$this->session->set_userdata('userId', $res['id']); // this doesn't work
$_SESSION['userId']=$res['id']; // this works.
我在 smarty 中访问它:
{$smarty.session.userId}
为什么 smarty 3 不考虑 codeIgniter 会话变量:
$this->session->set_userdata('userId', $res['id']); // this doesn't work
$_SESSION['userId']=$res['id']; // this works.
我在 smarty 中访问它:
{$smarty.session.userId}
CI (!!!) 不使用 PHP 超全局 $_SESSION...
在此处阅读有关将 CI 的会话公开给 Smarty 的好方法。
http://ellislab.com/codeigniter/forums/viewthread/110540/#571279
在代码点火器中
$this->session->set_userdata()
功能将数据保存在cookie中,因此您无法通过会话获取数据。
你可以这样做:
在你的控制器中是这样的:
$data['session']=$this->session->userdata;
$this->smarty_parser->parse("smarty.php", $data);
或者,如果您不想每次都在控制器中执行此操作,则可以将其移至 smarty 包装器类。
在您的 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}