使用条件在 smarty 中设置 var

Posted

技术标签:

【中文标题】使用条件在 smarty 中设置 var【英文标题】:setting a var in smarty with a condition 【发布时间】:2012-01-11 10:59:24 【问题描述】:

我真的很喜欢smarty documentation,但有时很难找到简单的东西......所以这是我的问题。是否可以在条件中设置 var ?有一个带有许多欧元符号的大模板。 现在有另一种新语言,但他们不使用欧元支付。因此,不要为每个欧元符号周围的语言设置条件。我想使用一个在模板开头设置的变量,语言条件如下:

if $lang eq 'ch'
*need to set "CHF" as a smarty or php var*
else
*need to set "EURO" as a smarty or php var*
/if

<div class="payment">$price *CHF or EURO var*</div>

【问题讨论】:

抱歉忘记了...它不是我的插件/php,也许它不允许我触摸它;)总而言之...我更喜欢聪明的解决方案。谢谢 【参考方案1】:
if $lang eq 'ch'
    assign var="currency" value="CHF"
else
    assign var="currency" value="EURO"
/if

<div class="payment">$price $currency</div>

【讨论】:

很好...不知道它可以在 smarty 模板本身中分配。将记住它以用于 QAD 解决方案,或者如果再次错过某些访问权限;)感谢作品。【参考方案2】:

为什么不在模板之外设置它,在代码中,您将价格分配给模板?

我认为这就是它的归属。模板应该控制演示;与逻辑有关的任何事情都属于驱动它的代码。

【讨论】:

好的,我尝试了,就像我想的那样......无法访问插件只能访问 html 文件......客户......所以我什至不喜欢 smarty 解决方案......没有其他办法现在对我来说。【参考方案3】:

捷径:

assign currency ($lang eq 'ch') ? 'CHF' : 'EURO'

【讨论】:

【参考方案4】:
if $lang eq 'ch'
    <div class="payment">$price CHF</div>
else
    <div class="payment">$price EURO</div>
/if

不需要变量吗?

【讨论】:

阅读问题,页面上有很多欧元符号(例如 40)...我不想这样做 40 次;) 啊,我忽略了这一点。仍然认为这最好在 php 文件本身内完成。

以上是关于使用条件在 smarty 中设置 var的主要内容,如果未能解决你的问题,请参考以下文章

Smarty模板的学习_2

在 Ansible/Jinja2 中设置 var 的 case 语句

Laravel 5.2:如何在刀片模板中设置变量,没有 php 标签?

如何使用更新条件在 Wix 中设置变量?

在 Firebase 完成块中设置 @Published var 不更新 SwiftUI 视图

php7调试怎么在phpstorm中设置