【问题标题】:PHP template engine which could separate presentation from back logicPHP模板引擎,可以将表示与后台逻辑分离
【发布时间】:2014-01-17 11:50:12
【问题描述】:

我现在为一个 java 团队工作,但我正在使用 PHP 处理私人案例。

我的工作团队正在导入Thymeleaf,这是一个强大的java模板引擎。

它可以将输出变量或表达式如if else写入标签作为属性,例如:

<tr th:each="prod : ${allProducts}">  
  <td th:text="${prod.name}">Oranges</td>  
  <td th:text="${#numbers.formatDecimal(prod.price,1,2)}">0.99</td>  
</tr>  

它也可以在浏览器中正常渲染,完全没有任何java的变量或表达式。

当我使用 PHP 时,我知道 Smartytwig
但是他们都必须在标签之外编写变量和表达式(不是作为属性),在浏览器中显示。

所以我想知道是否有办法像 Thymeleaf 那样使用 Smarty 或 twig。
或者其他 PHP 模板引擎可以轻松做到这一点。

最好的问候,

更新

它也可以在浏览器中正常渲染,完全没有任何java的变量或表达式。

我的意思是这可以在没有任何解析过程的情况下完成。
只在浏览器中打开文件,就像没有任何引擎一样。

【问题讨论】:

    标签: php html templates


    【解决方案1】:

    我知道了!

    我是PHPTAL
    和 Thymleaf 一样!

    太棒了!

    【讨论】:

      【解决方案2】:

      带有内置模板引擎的纯 PHP。无需安装。

      <?php foreach ($allProducts as $prod): ?>
      <tr>
      <td><?= $prod->name ?></td>
      <td><?= $numbers->formatDecimal($prod->price,1,2) ?></td>
      </tr>
      <?php endforeach; ?>
      

      如果你不输入&lt;? 标签,它就像普通的html。分离是按照惯例,没有技术障碍。如果你有更多受限技术的经验,这就足够了。

      【讨论】:

      • 谢谢。作为一名 PHP 开发人员,我知道这一点,并且可以毫无技术障碍地使用这种方式。但是当我们说尽可能将呈现与逻辑分开时,我和那些设计师可能不喜欢这种方式。
      【解决方案3】:

      但他们都必须在标签之外写变量和表达式

      嗯……不是吗?我希望我没有以某种方式理解你的错误,但这是错误的。

      <script src="{$tmplpath}js/chosen/chosen.jquery.min.js"></script>
      <link rel="stylesheet" href="{$tmplpath}css/style_general.css">
      {if isset($custom_stylesheet)}
          <link rel="stylesheet" href="{$tmplpath}css/{$custom_stylesheet}">
      {/if}
      

      这是我上一个与 Smarty 合作的项目,我不必在标签之外写。

      【讨论】:

      • 我从未使用过 Thymeleaf,但它似乎使用 (X|HT)ML 作为其语法的一部分。 Twig/Smarty 独立于它们实际输出的内容运行,Thymeleaf 似乎更像 XSLT。
      • @y-u-no-work 很抱歉我的描述不是很清楚,我刚刚更新了。好吧,如果您的文件直接在浏览器中打开,我认为 if 部分仍然会显示。
      • @deceze 但它对设计师来说非常干净,因此他们可以专注于那里的设计。
      • 嗯,Smarty 使用的.tpl 文件甚至无法在浏览器中直接打开,他总是会尝试下载它,是的,您可能会看到 if 部分是纯文本。没看过那部分,对不起。
      • @tech_me 当然,我可以看到吸引力。对我个人而言不是这样,因为我通常是一个人的前端和后端编码器,但是能够在不需要引擎渲染的情况下将模板预览为纯 HTML,这对于更大、更隔离的团队来说肯定是有利的。跨度>
      猜你喜欢
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 2012-08-28
      • 1970-01-01
      相关资源
      最近更新 更多