2011-04-22 77 views
5

我可以用Smarty製作一個漂亮的HTML嗎?Smarty縮進和代碼格式

我的意思是,如果我採取這種模式(它不是一個工作代碼,只是一個例子):

<div class="comments-div"> 
    {{assign var="i" value="0"}} 
    {{assign var="tab" value="0"}} 
    {{foreach from=$contact.comments item=comment}} 
    <div class="comment-text"><p>{{$comment.text}}</p></div> 
     {{if $i == 3}} 
      {{assign var="i" value="0"}} 
     {{else}} 
      {{assign var="i" value=`$i+1`}} 
     {{/if}} 
    {{/foreach}} 
</div> 

它可以在所有這些醜陋的空間產生這樣的

        <div class="tab" id="tab0" style="display: block;"> 
      <div id="container73"> 
       <div class="comment-text"><p>c1</p></div> 
       <div class="addby"> 
        <p> 
        Added by: ASDF at 2011-04-22 15:58:41 
              &nbsp;<span> | </span>&nbsp;<a class="delete" _id="73">Delete comment</a> 

              </p> 
       </div> 
      </div> 
                     <div id="container74"> 
       <div class="comment-text"><p>c2</p></div> 
       <div class="addby"> 
        <p> 
        Added by: DFGS at 2011-04-22 15:58:44 
              &nbsp;<span> | </span>&nbsp;<a class="delete" _id="74">Delete comment</a> 

              </p> 
       </div> 
      </div> 

外觀和換行

所以問題是:是否有任何做法來避免Smarty的醜陋代碼?

也許我需要使用類似的東西?

<div class="comments-div"> 
{{ assign var="i" value="0"}} 
{{ assign var="tab" value="0"}} 
{{ foreach from=$contact.comments item=comment}} 
    <div class="comment-text"><p>{{$comment.text}}</p></div> 
{{  if $i == 3}} 
{{   assign var="i" value="0"}} 
{{  else}} 
{{   assign var="i" value=`$i+1`}} 
{{  /if}} 
{{ /foreach}} 
</div> 
+1

xml本身很醜,可以考慮使用更乾淨的東西,比如[phaml](http://phaml.sourceforge.net/) – denysonique 2011-04-22 15:45:58

+0

另外,你應該將你的應用程序邏輯從它的視圖(模板)中分離出來,儘量遵循MVC模式,這會使一切更具可讀性。 – denysonique 2011-04-22 15:52:38

+0

所以在模板引擎(smarty)模板語言(PHP)我必須使用一個更多的邏輯/視圖分離? – llamerr 2011-04-22 16:34:29

回答

2

根據您想如何格式化它,你可以使用{}條功能:http://www.smarty.net/docs/en/language.function.strip.tpl {}條從輸出中刪除空白。

如果你想在一行的輸出,你可以做這樣的事情:

{{strip}}<div class="comments-div"> 
    {{assign var="i" value="0"}} 
    {{assign var="tab" value="0"}} 
    {{foreach from=$contact.comments item=comment}} 
    <div class="comment-text"><p>{{$comment.text}}</p></div> 
     {{if $i == 3}} 
      {{assign var="i" value="0"}} 
     {{else}} 
     {{assign var="i" value=`$i+1`}} 
     {{/if}} 
    {{/foreach}} 
</div>{{/strip}} 

您還可以使用{條}在輸出部分去除空白:

<div class="comments-div">{{strip}} 
    {{assign var="i" value="0"}} 
    {{assign var="tab" value="0"}} 
    {{/strip}}{{foreach from=$contact.comments item=comment}} 
    <div class="comment-text"><p>{{$comment.text}}</p></div>{{strip}} 
     {{if $i == 3}} 
      {{assign var="i" value="0"}} 
     {{else}} 
     {{assign var="i" value=`$i+1`}} 
     {{/if}} 
    {{/strip}}{{/foreach}} 
</div> 
0

例如:

$html = $smarty->fetch('index.tpl'); 
$html = preg_replace("#^\s+#m", '', $html); 
echo $html;