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 コンテナーをクラスに注入することです。

その後、次の方法でセッソンにアクセスできます。$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 に答える