模板中引用session数组,二级数组下的值丢了(已解决)

浏览:1467 发布日期:2015/10/23 分类:技术分享
前两天碰到的问题终于解决了,发出来给需要的朋友参考一下。
我的是OneThink,模板中引用session数组,代码如下:    123
    <BR>0:{$Think.session.user_auth.0}
    <BR>2:{$Think.session.user_auth.2}
    <BR>username:{$Think.session.user_auth.username}
    <BR>user_auth_sign:{$Think.session.user_auth_sign}
输出结果: 123 
 0:    
 2:    
username:    
user_auth_sign:2a1ebd6b3081ea57c79a507c93379184ba4b1912
中间几行是空的,什么session值都没有啊!是我的模板中代码写法不对吗?请教!

我的实际session值:dump(session());
//session:
array(2) {
 ["user_auth"] => array(4) {
      ["uid"] => string(2) "40"
      ["nickname"] => string(0) ""
      ["username"] => string(6) "阿新"
      ["last_login_time"] => string(10) "1445525240"
 }
 ["user_auth_sign"] => string(40) "2a1ebd6b3081ea57c79a507c93379184ba4b1912"
 }
//+++++++++++++++++++++++++++++++++++++++++++++
找到原因了,正确写法是:{$Think.session.user_auth.username}有一处thinkphp的代码要修改一下:
\ThinkPHP\Library\Think\Template.class.php

找到:case 'SESSION':
    if(isset($vars[3])) {
    $parseStr = '$_SESSION[\''.$vars[2].'\'][\''.$vars[3].'\']';
    }
    ...
    break;
改成:case 'SESSION':
    if(C('SESSION_PREFIX')){
        $parseStr = '$_SESSION[\''.C('SESSION_PREFIX').'\']';
    }else{
        $parseStr = '$_SESSION';
    }
    if(isset($vars[3])) {
        $parseStr.= '[\''.$vars[2].'\'][\''.$vars[3].'\']';
    }else{
        $parseStr.= '[\''.$vars[2].'\']';
    }
    break;
最佳答案
评论( 相关
后面还有条评论,点击查看>>