我有一个如下所示的Smarty循环,例如:
{strip}
{assign "comma" ""}
{foreach from=$List item=Item}
{$comma}{$Item.title}
{assign "comma" ","}
{/foreach}
{/strip}
.. I EXPECT 是:
Apple,
Banana,
Candy
..写作文件。
我的PHP代码(写文件)是:
$f = fopen('myfile.txt', 'w');
fwrite( $f, $smarty->fetch('sample.tpl') );
而是 IN REALITY ,它的编写如下:
Apple,Banana,Candy
即使我在Smarty \r
中使用\r\n
或tpl
,它们也会被打印出来,就像角色本身一样。
无论如何不打破。
请问怎么做?
答案 0 :(得分:2)
来自{strip}
的文档我引用in your other question (并要求您阅读):
{strip}{/strip}
标记内的任何内容都会被删除多余的空格或回车 at 它们显示之前的行的开头和结尾。这样你可以保持你的 模板可读,不用担心造成问题的额外空白。
一个解决方案:
{strip}
{foreach name=foo from=$List item=Item}
{$Item.title}{if !$smarty.foreach.foo.last}{literal},
{/literal}{/if}
{/foreach}
{/strip}
剥去删除空格和文字强制,<newline>
作为分隔符。注意:{literal}
和{/literal}
(使用smarty 3.1.16测试)