我们大量使用Smarty进行所有前端模板操作.我观察到以下情况:
当我的Smarty模板类似于以下内容时:
<li>
    {if $a == 'A'}
        {$var1}
    {else}
        {$var2}
    {/if}
    <br><span>SUBTEXT</span>
</li>
传递给浏览器的最终HTML是:
<li>
                            65
                        <br><span>SUBTEXT</span>
        </li>
我希望它更干净,类似于:
<li>
    65<br><span>SUBTEXT</span>
</li>
或更好:
<li>65<br><span>SUBTEXT</span></li>
无论如何,我可以使用Smarty 3中的一些配置设置吗?格式化和清理最终HTML创建的任何设置?
谢谢
您可以使用{strip}删除模板的一部分中的所有空格和回车:
http://www.smarty.net/docsv2/en/language.function.strip.tpl
{strip}
<li>
    {if $a == 'A'}
        {$var1}
    {else}
        {$var2}
    {/if}
    <br><span>SUBTEXT</span>
</li>
{/strip}
输出应该是:
<li>65<br><span>SUBTEXT</span></li>
这可能不方便,但请注意,空格和换行符对HTML输出具有重要影响/重要性,并且全局剥离它们可能会产生意想不到的副作用.
您可以加载输出过滤器trimwhitespace.它消除了HTML注释(除ConditionalComments),并降低多个空格到处单一的空间,但是<script>,<pre>,<textarea>.
您可以<two> <tags>通过更改第62行来轻松地使过滤器移除空间.更改
'#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2',
至
'#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1\2',
你完成了
输出过滤器在呈现模板之后运行,然后在发送到浏览器之前运行.{strip}在模板处理之前运行 - 这是编译时的事情.所以以下
{$some_var = "Hello\nworld"}
{strip}
  -
  {$}
  -
{/strip}
将输出
-hello
world-
而outputfilter将返回
- hello world -