gpt4 book ai didi

php - Prestashop $logged 和 $is_logged

转载 作者:行者123 更新时间:2023-12-02 06:32:05 24 4
gpt4 key购买 nike

我在使用 Smarty 时遇到问题,有时在默认代码中会出现 $is_logged

..\modules\blockuserinfo\blockuserinfo.php

[...]
public function hookDisplayTop($params)
{
if (!$this->active)
return;

$this->smarty->assign(array(
[...]
'is_logged' => $this->context->customer->isLogged(),
[...]
));
return $this->display(__FILE__, 'blockuserinfo.tpl');
}
[...]

..\themes\presta-bootstrap\modules\blockuserinfo\nav.tpl

<!-- Block user information module NAV  -->
{if $is_logged}
<div class="header_user_info">
[...]
</div>
{/if}

但在 $logged 上更改 .tpl 中的 var 名称之前,它不会起作用。然后突然它起作用了!怎么办?

类似的情况。

..\themes\presta-bootstrap\order-opc.tpl

<!-- Shopping Cart -->

{include file="$tpl_dir./shopping-cart.tpl"}
<!-- End Shopping Cart -->
{if $is_logged AND !$is_guest}
{include file="$tpl_dir./order-address.tpl"}
{else}
<!-- Create account / Guest account / Login block -->
{include file="$tpl_dir./order-opc-new-account.tpl"}
<!-- END Create account / Guest account / Login block -->

仅当我将 $is_logged 替换为 $logged 时才能正常工作。这两种情况都不会出错,只是得到 FALSE 值并给出意想不到的结果。

我应该去哪里找原因?

最佳答案

让我们一步步说清楚,$logged$is_logged 只是 Smarty 变量,这意味着它们在某处定义。

我不确定你使用的是什么版本,在 blockuserinfo.php 中的 1.6.0.11 我看到定义:

this->smarty->assign(array(
...
'logged' => $this->context->customer->isLogged(),

classes/controllers/Frontcontroller.php 的另一边,在 init() 方法中你可能会看到:

'is_logged' => (bool)$this->context->customer->isLogged(),

然后在下面:

//弃用
$this->context->smarty->assign(数组(
...
'logged' => $this->context->customer->isLogged(),

两个结论如下:

  1. 在全局代码中最好使用 $is_logged$logged 可能会在下一版本中删除。
  2. 如果重新定义变量,它将覆盖全局值(是的,我是 Captain Obvious)。

您可以很容易地检查它,例如通过将 FrontController 变量替换为一些虚拟值,如“xxx”和“yyy”,然后在你的 nav.tpl 中,如 {$is_logged} = {$logged}

希望它能帮助您更好地了解情况。

关于php - Prestashop $logged 和 $is_logged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32651060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com