如何将TPL/PHP登录判断条件转为Twig?求验证现有语法
验证Vanilla Forum Twig模板中登录用户可见面板的语法正确性
我想在Vanilla Forum的Twig文件中添加仅登录用户可见主面板的条件,但只找到TPL和PHP的示例代码,尝试转换为Twig语法均未成功,不确定自己编写的Twig语法是否正确,请求帮忙验证:
我的Twig代码片段
<div class="Frame-details"> {% if not isHomepage %} <div class="Frame-row"> <nav class="BreadcrumbsBox" aria-label={{ t("Breadcrumb") }}> {{ renderBreadcrumbs() }} </nav> </div> {% endif %} <div class="Frame-row"> <!-- Main Content --> <section class="Content MainContent"> {{ renderControllerAsset("Content") }} </section> <!-- Main Content END --> <!-- Main Panel --> {% if UserSignedIn %} <div class="Panel Panel-main"> {{ renderControllerAsset("Panel") }} </div> {% endif %} <!-- Main Panel END -->
找到的参考示例
TPL(Smarty)示例
{if $User.SignedIn} Do some coding like show the Panel Asset {/if}
PHP示例
$Session = Gdn::Session(); if ($Session->IsValid()) { Show the Panel Asset } else { Show only the Guest Box asset }
语法验证结果
你当前的Twig写法不正确,正确的判断逻辑应该是检查user.SignedIn变量:
修改后的核心代码片段:
<!-- Main Panel --> {% if user.SignedIn %} <div class="Panel Panel-main"> {{ renderControllerAsset("Panel") }} </div> {% endif %} <!-- Main Panel END -->
说明
Vanilla Forum从Smarty模板(.tpl)切换到Twig后,模板变量的命名规则有变化:
- 原Smarty中的
$User.SignedIn对应Twig里的user.SignedIn(小驼峰命名,对象名小写) - 这个变量的逻辑和PHP示例中
$Session->IsValid()完全一致,都是判断用户是否处于登录状态(会话有效)
内容的提问来源于stack exchange,提问作者Scudo
相关产品推荐
相关产品推荐

