【问题标题】:Smarty assign value to variable inside included templateSmarty 为包含的模板内的变量赋值
【发布时间】:2015-07-05 20:46:08
【问题描述】:

我有一个列表项模板如下:

<div class="listing-item">
    <div class="photo">{$thumbnail}</div>
    <div class="title">{$name}</div>
    <div class="price">{$price} {$currency}</div>
    <div class="location">{$city}/{$town}</div>
</div>

我从另一个模板文件中包含这个模板,并将它分配到一个名为listing_item的变量中,如下所示:

<div class="listing-box-container clearfix">
    {include file="common/product/listing_item.tpl" assign=listing_item}
</div>

现在我有一个名为 listing_item 的变量,它包含单个列表项的模板。

我想为 listing_item 中的变量赋值,例如:

{assign var="$listing_item.thumbnail" value="Sometown"}

我在包含模板时不是密码值,因为我想多次使用 listing_item,所以我不想在每次需要时都加载它。

这里的想法是包含一次模板,然后在需要的地方分配值和回显。

那么,如何在模板中为已经包含并分配给变量的变量赋值?

或者,在 smarty 中满足我的需求的最佳做法是什么?

任何帮助将不胜感激

【问题讨论】:

    标签: php templates smarty3


    【解决方案1】:

    如果你使用smarty3你可以使用这个构造:

    {$listing_item = [
        'thumbnail' => 'some_thumbnail',
        'title' => 'some_title',
        'price' => 'some_price'
    ]}
    

    更多关于变量语法的信息在这里http://www.smarty.net/docs/en/language.syntax.variables.tpl

    现在将它传递给模板:

    <div class="listing-box-container clearfix">
        {include file="common/product/listing_item.tpl" listing_item=$listing_item}
    </div>
    

    并在模板内使用:

    <div class="listing-item">
        <div class="photo">{$listing_item.thumbnail}</div>
        <div class="title">{$listing_item.name}</div>
        <div class="price">{$listing_item.price} {$listing_item.currency}</div>
        <div class="location">{$listing_item.city}/{$listing_item.town}</div>
    </div>
    

    【讨论】:

    • 感谢您的回答。我已经联系了 smarty irc 上的人,他们告诉我,当你将 someting 分配给变量时,它会被渲染。所以你不能为变量内的变量赋值。因为变量里面没有变量就是保存模板。它现在只是呈现文本。他们告诉我,当您包含模板时,它会在缓存后加载。进一步包括忽略。所以没有性能损失。这正是我所追求的。 smarty 自动完成。
    猜你喜欢
    • 2011-05-29
    • 1970-01-01
    • 2014-11-22
    • 2018-12-28
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多