【问题标题】:Shopware - Pass $sUserLoggedIn-Variable to WidgetShopware - 将 $sUserLoggedIn-Variable 传递给小部件
【发布时间】:2015-08-07 22:31:38
【问题描述】:

我目前在 Shopware-Widget 中请求用户是否登录时遇到问题。 我需要这样做,因为如果用户未登录,则应该隐藏情绪页面上的某些元素。我刚刚所做的是将 component_html.tpl 中的代码更改为如下内容:

{if $Data.cms_title|substr:0:1 == "_"}
    {assign var="private" value=true}
{else}
    {assign var="private" value=false}
{/if}


{if $Data.cms_title}
    <div class="page-header">
        <h3>{$Data.cms_title|substr:1}</h3>
        {if $private and $sUserLoggedIn}<p>This block is private</p>{/if}
    </div>
{/if}
{$Data.text}

不幸的是,Shopware 默认没有将模板变量(在本例中为 $sUserLoggedIn)传递给小部件,我不知道如何解决这个问题。

任何帮助表示赞赏:) 问候

【问题讨论】:

    标签: php smarty shopware


    【解决方案1】:

    您是否尝试将$sUserLoggedIn 设为全局变量?你可以在Shopware docs找到教程。

    【讨论】:

    • 最好最简单的方法。仅供参考,要使变量全局化,您只需在添加变量时添加scope="global"
    【解决方案2】:

    这很丑陋,但商店软件在它自己的代码中做到了。好吧,对于商店用品,几乎所有东西看起来都像黑客一样。 在我的插件的引导程序中,我这样做:

    $view->assign('isUserLoggedIn', !empty(Shopware()->Session()['sUserId']));
    

    【讨论】:

      【解决方案3】:

      最好的方法是将 DI 容器注入到你的类中。

      之后,您可以通过以下方式访问 Sesson:$session = $this-&gt;container-&gt;get('session');

      现在你可以做类似的事情了:

      $view->assign('isUserLoggedIn', !empty($session->sUserId)); or
      $view->assign('isUserLoggedIn', !empty($session->offsetGet("sUserId"));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-31
        • 2018-12-30
        • 2021-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-17
        相关资源
        最近更新 更多