我目前在Shopware-Widget中请求用户是否登录时遇到问题。 我需要这样做,因为如果用户没有登录,应该隐藏Emotion-Pages上的一些元素。我刚刚做的是将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)传递给小部件,我不知道如何解决问题。
任何帮助表示赞赏:) 问候
答案 0 :(得分:1)
您是否尝试将$sUserLoggedIn
设为全局变量?您可以在Shopware docs中找到教程。
答案 1 :(得分:0)
这很丑陋,但是商店用它自己的代码来做。嗯,随着商品,几乎所有东西看起来像一个黑客。 在我的插件引导程序中,我做了:
$view->assign('isUserLoggedIn', !empty(Shopware()->Session()['sUserId']));
答案 2 :(得分:0)
最好的方法是将DI容器注入您的班级。
之后,您可以通过$session = $this->container->get('session');
现在你可以这样做了:
$view->assign('isUserLoggedIn', !empty($session->sUserId)); or
$view->assign('isUserLoggedIn', !empty($session->offsetGet("sUserId"));