2012-03-03 49 views
1

中读取我的项目 - 在过程结束时生成一个表单。在我以前的系统中,它是正则表达式+ HTML的组合(我学到的不是很好维护:))PHP - 需要一个模板系统,可以从数据源

所以我走了,做了一些研究,但我似乎无法找到模板引擎我在之后。我已经盯上关闭嫩枝& Smarty的,但我想要的发动机能够通过自定义标签迭代,这反过来又调用一个函数检索从源读取数据(基本一个回调函数)。由于已经有大量的数据收集,并且根据用户想要显示的数据,它可以采用所有不同的格式。

我也希望包括如果其他条件

我希望我足够清楚。

我会从我的模板系统

<html> 
    <body> 
     <table> 
     <tr> 
      <td> 
       Building 
      </td> 
      <td> 
       <mi:seperated seperator=", " source="building" key="type" /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       Construction 
      </td> 
      <td> 
       <mi:seperated seperator=", " source="house" key="construction" default="N/A" /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       Floor 
      </td> 
      <td> 
       <mi:value source="house" key="floor" default="N/A" /> 
      </td> 
     </tr> 
     </table> 
    </body> 
</html> 

提供代码的一个非常基本的例子,最终的结果会是这样。

<html> 
    <body> 
     <table> 
     <tr> 
      <td> 
       Building 
      </td> 
      <td> 
       Double Storey, Domestic dwelling 
      </td> 
     </tr> 
     <tr> 
      <td> 
       Construction 
      </td> 
      <td> 
       6 Bedrooms, Brick Veneer 
      </td> 
     </tr> 
     <tr> 
      <td> 
       Floor 
      </td> 
      <td> 
       N/A 
      </td> 
     </tr> 
     </table> 
    </body> 
</html> 

这些表单模板可以由任何人编辑。所以,我不想做'PHP是一种模板语言'的路径,除非这是一种简单的方法来限制执行代码。

编辑:也只是一个简短的说明。在回调功能是处理HTML输出如果你使用Smarty的,你可以创建一个插件来处理您的自定义标签(因为有些标签可以创建复杂的输出)

+0

任何理由不与普通的旧PHP做到这一点,这本身就是一个模板引擎?它甚至包含了像'<?php if($ condition):?><?php endif; ?> – 2012-03-04 01:13:53

+0

@Michael因为每个人都可以访问模板。普通用户。我在我的OP中这么说:(主要攻击潜力 – DdD 2012-03-04 07:38:52

+0

@Michael您的评论给了我一些想法,我想出了一些想法。我写了一个非常简单的系统,它使用DOMDocument并遍历节点寻找所有我的自定义名称空间标记并将它们转换为适当的PHP代码:)并且if条件只接受在datasource类中声明的函数。 – DdD 2012-03-05 00:10:24

回答

0

。少了一些关于插件的Smarty http://www.smarty.net/docs/en/plugins

我想你将不得不看的东西像block functions

+0

是的,我一直在看着聪明。如果我无法按照自己想要的方式让它工作,我可能只是从中获得灵感并制作一个最小化的模板系统。在整个过程中都有许多想法 – DdD 2012-03-04 07:40:22