如何在smarty中的标签之间传递参数?有没有命令呢?

时间:2014-01-21 10:32:05

标签: php smarty

我们假设我们有这个HTML代码:

<div class="block">
    <div class="block-head">This is title</div>
    <div class="block-body">This is body</div>
</div>

现在,让我们制作TPL(myblock.tpl):

<div class="block">
    <div class="block-head">{$title}</div>
    <div class="block-body">{$body}</div>
</div>

我现在可以这样做了:

{include file="myblock.tpl" title="User Settings" body="<div>HELLO</div>"}

结果将是:

<div class="block">
    <div class="block-head">User Settings</div>
    <div class="block-body"<div>HELLO</div></div>
</div>

但是有什么方法可以用这样的聪明之处吗?

{include file="myblock.tpl" title="User Settings"}
    <div>HELLO</div>
{/include}

1 个答案:

答案 0 :(得分:0)

似乎你想要解决smarty所写的实际意义。

文档说明没有办法直接将Markup传递给模板,方法是将它放在include“标签”之间。

似乎解决问题的方法并不多 但是有人会像这样编写一个页面文件:

...

{include file="myblock.tpl" title="User Settings"}
<div>HELLO</div>
{include 'footer.tpl'}

...

作为(显然更好)替代“fetch”似乎是另一种解决方案: http://www.smarty.net/docsv2/de/api.fetch.tpl http://www.smarty.net/docsv2/de/language.function.fetch.tpl

它会将模板的内容存储在一个变量中,您可以将其传递给您的包含,如下所示:

{fetch file="myblock_body.tpl" assign="foo"}
{include file="myblock.tpl" title="User Settings" body=$foo}