我怎样才能在Smarty模板中加入这样的东西?

时间:2011-05-07 23:35:21

标签: php smarty templating

我正在尝试将已存在的html和php混合的网站转换为基于Smarty模板的网站。我之前从未使用过Smarty,所​​以这对我来说非常困难。我知道你可以像这样分配一个变量:

$smarty->assign('number_of_items_in_cart', $number_of_items_in_cart);

并在tpl文件中使用它,如下所示:

{$number_of_items_in_cart}

但是更复杂的事情呢,比如我在旧网站上的这段代码:

$query = mysql_query(" SELECT * FROM products WHERE id = '$pid' ");

if (mysql_num_rows($query) == 1) {

    while ($row = mysql_fetch_array($query)) {
        extract($row);
        echo "<h2>$name</h2>";
        echo "<img src='images/product_images/$image' alt='' width='100' />";
        echo $description;
        echo '<p>'.money($price).'</p>';
        echo "<input type='text' value='1' class='qty-$id' />";
        echo "<a href='javascript:void(0)' onClick=\"add_cart('$id')\">Add to Cart</a>";
    }

} else {
    redirect('404.php');
}

我如何在Smarty模板中使用它,因为输出在while循环中?

2 个答案:

答案 0 :(得分:0)

您可以将其附加到字符串变量中,然后将其传递给smarty:

,而不是回显这个
$string = "";
while ($row = mysql_fetch_array($query)) {
        extract($row);
        $string .= "<h2>$name</h2>";
        $string .=  "<img src='images/product_images/$image' alt='' width='100' />";
        $string .=  $description;
        $string .=  '<p>'.money($price).'</p>';
        $string .=  "<input type='text' value='1' class='qty-$id' />";
        $string .=  "<a href='javascript:void(0)' onClick=\"add_cart('$id')\">Add to Cart</a>";
    }

现在你可以将它传递给smarty

$smarty->assign('place_holder', $string);

我希望这就是你要找的东西

答案 1 :(得分:0)

您可以使用foreach内置函数迭代包含查询结果的数组 您还可以使用foreachelse来显示备用消息(但在这种情况下,您将重定向)。

参见http://www.smarty.net/docsv2/en/language.function.foreach中的例7.9。

修改:如果您真正想要的话,还有一个while功能。