我正在使用Smarty进行一些实验,但是我遇到了一个foreach循环的麻烦,它不起作用,我无法理解为什么。这是我的代码:
Default.tpl
<select name="user">
{html_options values=$id output=$names selected="5"}
</select>
<table>
{foreach $names as $name}
{strip}
<tr bgcolor="{cycle values='#eeeeee,#dddddd'}">
<td>{$name}</td>
</tr>
{/strip}
{/foreach}
</table>
<table>
{foreach $users as $user}
{strip}
<tr bgcolor="{cycle values='#aaaaaa,#bbbbbb'}">
<td>{$user.name}</td>
<td>{$user.phone}</td>
</tr>
{/strip}
{/foreach}
</table>
和default.php
<?php
include('Smarty.class.php');
//create object
$smarty = new Smarty;
$smarty->template_dir = 'C:\xampp\htdocs\smarty\templates';
$smarty->config_dir = 'C:\xampp\htdocs\smarty\config';
$smarty->cache_dir = 'C:\xampp\php\smarty\cache';
$smarty->compile_dir = 'C:\xampp\php\smarty\templates_c';
$smarty->assign('names', array('Bob', 'Jimmy', 'Freddy', 'Walter', 'Jerry'));
$smarty->assign('users', array(
array('name' => 'bob', 'phone' => '555-3425'),
array('name' => 'jim', 'phone' => '555-4364'),
array('name' => 'joe', 'phone' => '555-3422'),
array('name' => 'jerry', 'phone' => '555-4973'),
array('name' => 'fred', 'phone' => '555-3235')
));
//display information
$smarty->display('default.tpl');
?>
测试时出现以下错误:
致命错误:Smarty错误:[在default.tpl第16行]:语法错误:无效的属性名称:C:\ xampp \ php \ Smarty \ libs中的'$ names'(Smarty_Compiler.class.php,第1550行) \ Smarty.class.php在1094行。
和$ users一样。因为我知道价值观正在传递,因为它正在发挥作用,我无法理解正在发生的事情。
Thnx提前。
编辑:我从这个聪明的网站上拿了这个例子。
答案 0 :(得分:1)
{foreach name=$names}
.
.
.
.
<td> {$name} </td>
这是它的工作原理。我从未尝试过你在smarty中使用foreach的方式。
答案 1 :(得分:1)
似乎智能网站上的示例无效。这是我必须做的才能让它发挥作用:
<table>
{foreach from=$names item=name}
{strip}
<tr bgcolor="{cycle values='#eeeeee,#dddddd'}">
<td>{$name}</td>
</tr>
{/strip}
{/foreach}
</table>
<table>
{foreach from=$users item=user}
{strip}
<tr bgcolor="{cycle values='#aaaaaa,#bbbbbb'}">
<td>{$user.name}</td>
<td>{$user.phone}</td>
</tr>
{/strip}
{/foreach}
</table>