我正在尝试将已存在的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循环中?
答案 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功能。