在会话中存储值并在tpl文件xcart上检索

时间:2014-05-14 06:37:58

标签: php session smarty x-cart

我在x-cart中面临问题, 我正在尝试在x-cart中创建会话和存储值 为此,我用了

x_session_register('subscription');

及其中的简单变量

$rs=1;
if($rs==1)
{
  $subscription=1;
}
else
{
  $subscription=0;
}

之后在tpl文件中使用了一些代码,如

{$smarty.session.subscription}

但没有任何事情发生 我也试过了

{php}{/php}
$_SESSION[''];

但是无法帮助我,我无法理解这是怎么回事 有不同的文件和模板,文件路径也不同 尝试在login.php中创建会话,并希望在head.tpl文件中 请帮助我。提前谢谢

4 个答案:

答案 0 :(得分:2)

下面是一些与会话变量相关的注释,关于x-cart 4.4.x分支。

使用x_session_register()函数,每个变量都可以插入$XCART_SESSION_VARS数组中,因此, x_session_save()函数,会话变量数组保存在数据库中。

xcart中的会话数据保存在xcart_session_data表中,主键使用每个访问者的会话ID值('sessid'列),所有数据都以序列化格式保存在'data'列中。

示例摘录:

if ($some_var == "Y"){
  x_session_register("my_var");  
  $my_var="true";
  x_session_save();
}

if($XCART_SESSION_VARS['my_var '] =="true")
  $smarty->assign("my_var", $my_var); 

如果$XCART_SESSION_VARS变量不在范围内,我们将其声明为全局并检索它。

答案 1 :(得分:1)

在php文件中,

    if ($var1){
      x_session_register("my_var");  
      $my_var="content";
      x_session_save();
    }

    if($XCART_SESSION_VARS['my_var'] !=""){
      $smarty->assign("my_var", $XCART_SESSION_VARS['my_var']);
      x_session_unregister("my_var"); 
    }

在tpl文件中,

{if $my_var}
    {$my_var}
{/if}

答案 2 :(得分:0)

// Try this in you php 
$smarty->assign('session',$_SESSION);

// OR in tpl
/*
{$session|print_r} // for above assignment

// OR
{php}
    print_r($_SESSION);
{/php}

// OR
{$smarty.session.*}

*/

答案 3 :(得分:0)

您应首先检查$_SESSION中是否有任何变量。运行PHP(不在Smarty中)var_dump($_SESSION)以确保其中有任何变量

我查看了文档,似乎x-cart没有按照您的想法存储会话变量(因此$_SESSION中不会有变量)。它不会在$_SESSION中存储会话,而是以某些自定义方式存储会话。您可以查看http://kb.x-cart.com/display/XDD/Sessions+management

由于当您尝试在Smarty中使用$_SESSION时,$_SESSION中没有数据,因此无效。您需要使用x-cart方法获取会话变量,然后将它们分配给Smarty