Smarty本地变量与字符串的拼接

43

如何像下面这样将本地模板变量分配为连接的字符串:

```html
```
{$yes_src=const1.'yes'.const2}

在下面的代码中以 {$yes_src} 的方式使用。

顺便说一句,我正在寻找PHP开发者的工作 :)


可能是Smarty中的连接的重复问题。不过我更喜欢这个问题的答案。 - Gui Imamura
3个回答

92
你所做的方式叫做"assign"的“短形式”,你只需要使用正确的引用机制即可:
 {$yes_src="`$const1`yes`$const2`"}

使用assign

{assign var="yes_src" val="`$const1`yes`$const2`"}

使用 cat 命令:

{$const1|cat:"yes"}{$const2}

您也可以将变量直接放在一起,而无需将其分配给一个变量:

{$const1}yes{$const2}

...不需要变量。

注意:如果你发现自己经常使用assign,那么你可能对将逻辑与呈现分离的理念有误解。通常,在模板被调用之前,PHP会完成字符串拼接和其他变量操作。模板的作用只是显示数据,应该避免在模板中创建或修改数据。

文档


3
Smarty3 还允许 {$yes_src = "{$cont1}yes{$const2}"}。 - rodneyrehm

14
{ $yes_src = $variable|cat:"some string"|cat:$variable }

1
当需要连接包含引号的字符串时,这段代码非常有用,因为反引号无法与撇号一起使用。{assign 'myLoc' '|cat:{$smarty.config.LOCALE_STR}|cat:""} - TMa

11

试试这个:

{capture assign=yes_src}{$const1}.'yes'.{$const2}{/capture}

然后使用新变量:

{$yes_src}

这真是太棒了! - Dgloria

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接