Shopware - 将 $sUserLoggedIn-Variable 传递给小部件
Posted
技术标签:
【中文标题】Shopware - 将 $sUserLoggedIn-Variable 传递给小部件【英文标题】:Shopware - Pass $sUserLoggedIn-Variable to Widget 【发布时间】: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)传递给小部件,我不知道如何解决这个问题。
任何帮助表示赞赏:) 问候
【问题讨论】:
【参考方案1】:您是否尝试将$sUserLoggedIn
设为全局变量?你可以在Shopware docs找到教程。
【讨论】:
最好最简单的方法。仅供参考,要使变量全局化,您只需在添加变量时添加scope="global"
,【参考方案2】:
这很丑陋,但商店软件在它自己的代码中做到了。好吧,对于商店用品,几乎所有东西看起来都像黑客一样。 在我的插件的引导程序中,我这样做:
$view->assign('isUserLoggedIn', !empty(Shopware()->Session()['sUserId']));
【讨论】:
【参考方案3】:最好的方法是将 DI 容器注入到你的类中。
之后,您可以通过以下方式访问 Sesson:$session = $this->container->get('session');
现在你可以做类似的事情了:
$view->assign('isUserLoggedIn', !empty($session->sUserId)); or
$view->assign('isUserLoggedIn', !empty($session->offsetGet("sUserId"));
【讨论】:
以上是关于Shopware - 将 $sUserLoggedIn-Variable 传递给小部件的主要内容,如果未能解决你的问题,请参考以下文章