Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Smarty-模板内的模板定义_Php_Smarty - Fatal编程技术网

Php Smarty-模板内的模板定义

Php Smarty-模板内的模板定义,php,smarty,Php,Smarty,假设我们有3个带有mysql记录的数组,例如: 待决订单 处理订单 最近20次发货订单 我想将所有情况下的数据显示为HTML表,因此我将创建一个名为“order table.TPL”的新TPL,并通过参数将mysql行数据发送到模板文件。我可以这样称呼它: {include file="order-table.tpl" rows=$pending_rows} {include file="order-table.tpl" rows=$processing_rows} {include fil

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

  • 待决订单
  • 处理订单
  • 最近20次发货订单
我想将所有情况下的数据显示为HTML表,因此我将创建一个名为“order table.TPL”的新TPL,并通过参数将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文件中创建一些定义,然后多次调用它。

这似乎是正确的解决方案。 您可以通过以下方式创建函数:

{function name="hello" nickname="Mr. Unknown"}
    Hello, {$nickname}!
{/function}
{call hello nickname="Manny"}
这样说吧:

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

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

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


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

您可以将订单阵列放入新阵列中。然后遍历它,每次都创建一个新表。这是真的,但是如果您想将所有消息模板存储在一个TPL文件中(真正不同类型的消息),该怎么办?那么这个解决方案是非常有用的。您可以将其称为与常规模板几乎相同的模板,但不必强制创建新文件。因此,您将创建“messages.tpl”,并为每个“message template”创建函数。但我没有这样用过。我通常在PHP中存储消息,在Smarty中我只使用它们。