Smarty - 模板内的模板定义

时间:2014-07-29 07:11:34

标签: php smarty

假设我们有3个带有mysql记录的数组,例如:

  • 待定订单
  • 处理订单
  • 最近20次发货订单

我希望将数据显示为所有情况下的HTML表,因此我将创建一个名为" order-table.tpl"的新TPL。并通过参数i将mysql行数据发送到模板文件。我可以这样称呼它:

{include file="order-table.tpl" rows=$pending_rows}
{include file="order-table.tpl" rows=$processing_rows}
{include file="order-table.tpl" rows=$last_shipped_rows}

这个例子可以创建3个包含正确数据的表,但有没有其他方法可以在模板文件中定义模板文件?我不想每次都制作新的TPL文件。我想在TPL文件中创建一些定义,然后多次调用它。

2 个答案:

答案 0 :(得分:0)

似乎creating function是正确的解决方案。 你可以这样创建函数:

{function name="hello" nickname="Mr. Unknown"}
    Hello, {$nickname}!
{/function}

并以这种方式称呼它:

{call hello nickname="Manny"}

它与模板完全相同,但您不必在新文件中定义它。

答案 1 :(得分:0)

如果我是你,我宁愿留在第一个解决方案。这是使用Smarty的最自然的解决方案。您可以创建文件并将其包含在任何您想要的位置。如果您决定要在另一个模板文件中使用此代码,会发生什么?可能您必须将此代码复制到另一个文件中,或者最终您执行与开头相同的操作 - 创建文件并将内容复制到其中。

在开发应用程序时创建多个文件是正常的事情,在我看来,没有理由在必要时避免创建新文件。