无论用户是否登录,$ logged都返回1

时间:2014-06-10 18:50:00

标签: php smarty prestashop

我将$ logged变量添加到smarty中,以便检查用户是否登录

$this->smarty->assign(array(      
                    'wppopup' => $wppopup,  
                    'logged' => $this->context->customer->isLogged(),          
                    'default_lang' => (int)$this->context->language->id,
                    'image_width' => Configuration::get('WPPOPUP_IMAGE_WIDTH'),
                    'image_height' => Configuration::get('WPPOPUP_IMAGE_HEIGHT'),
                    'id_lang' => $this->context->language->id,
                    'wppopup_image' => !Configuration::get('WPPOPUP_IMAGE_DISABLE') && file_exists('modules/wppopup/wppopup_image_'.(int)$id_shop.'.jpg'),
                    'image_path' => $this->_path.'wppopup_image_'.(int)$id_shop.'.jpg'
                )
        );

但是当我在模板文件中使用{if $logged}时,它返回空。其他变量效果很好。

是否有遗失?

2 个答案:

答案 0 :(得分:1)

这不是Smarty问题。您应该在PHP文件中检查要分配给“已记录”isLogged方法返回的值的位置。

使用简单的

var_dump($this->context->customer->isLogged());

确保此方法返回的值,以便检查。

当我在PHP中使用时

$smarty->assign(array(                          
                    'logged1' => true,        
                    'logged2' => false
                )
        );

并在Smarty文件中:

{if $logged1}
is logged
{/if}

{if $logged2}
is logged too
{/if}

输出

  

已记录

因此,如果您将简单的true和false分配给Smarty变量,则它可以正常工作,因此可能isLogged方法返回其他一些值。

答案 1 :(得分:-1)

以这种方式试试

if($this->context->customer->isLogged() == true){
    $isLogged = "true";
}else{
    $isLogged = "false";
}

$this->smarty->assign(array(
    'wppopup' => $wppopup,  
    'logged' => $isLogged,  
    'default_lang' => (int)$this->context->language->id,
    'image_width' => Configuration::get('WPPOPUP_IMAGE_WIDTH'),
    'image_height' => Configuration::get('WPPOPUP_IMAGE_HEIGHT'),
    'id_lang' => $this->context->language->id,
    'wppopup_image' => !Configuration::get('WPPOPUP_IMAGE_DISABLE') && file_exists('modules/wppopup/wppopup_image_'.(int)$id_shop.'.jpg'),
    'image_path' => $this->_path.'wppopup_image_'.(int)$id_shop.'.jpg')
);