3

我目前在请求用户是否登录时遇到问题,在 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)传递给小部件,我不知道如何解决这个问题。

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

4

3 回答 3

2

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

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

现在你可以做这样的事情:

$view->assign('isUserLoggedIn', !empty($session->sUserId)); or
$view->assign('isUserLoggedIn', !empty($session->offsetGet("sUserId"));
于 2016-10-18T09:26:28.520 回答
1

您是否尝试创建$sUserLoggedIn一个全局变量?您可以在Shopware 文档中找到教程。

于 2015-10-20T08:11:12.397 回答
-1

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

$view->assign('isUserLoggedIn', !empty(Shopware()->Session()['sUserId']));
于 2016-05-25T16:06:50.937 回答