我有这个Smarty代码:
{foreach from=$chats item=chat}
{$chat['id']}
{/foreach}
当我尝试执行此操作时,我会看到一个白页。
我检查了PHP代码是否通过了
的合法数组{$chats[0]['id']}
这很有效。
我认为如果出现问题,Smarty会输出错误,所以我检查了我的Smarty设置,但它们似乎没问题?
<?php
require('smarty/Smarty.class.php');
global $smarty;
error_reporting(E_ALL);
ini_set('display_errors', '1');
$smarty = new Smarty();
$smarty->error_reporting = E_ALL & ~E_NOTICE;
$smarty->debugging = true;
$smarty->template_dir = "templates";
$smarty->compile_dir = "templates_c";
$smarty->cache_dir = "cache";
$smarty->config_dir = "configs";
?>
我检查了我的Smarty安装:
Smarty Installation test...
Testing template directory...
\templates is OK.
Testing compile directory...
\templates_c is OK.
Testing plugins directory...
\plugins is OK.
Testing cache directory...
\cache is OK.
Testing configs directory...
\configs is OK.
Testing sysplugin files...
... OK
Testing plugin files...
... OK
Tests complete.
没有foreach声明,一切正常。
更新
我有Smarty版本3.1.13,
我尝试了这个示例代码,来自Smarty文档(http://www.smarty.net/docs/en/language.function.foreach.tpl):
<?php
require("smarty.php");
$arr = array('red', 'green', 'blue');
$smarty->assign('myColors', $arr);
$smarty->display('foreach.tpl');
?>
<ul>
{foreach $myColors as $color}
<li>{$color}</li>
{/foreach}
</ul>
但即使使用此代码,我得到的只是一个白页
答案 0 :(得分:1)
您应该查看文档:{{3}}
您必须在变量之前放置$
。同样在Smarty3中不推荐使用item=
语法,我假设您正在使用该语法,因为在您的帖子中没有引用过时的Smarty2。
{foreach $chats as $chat}
{$chat['id']}
{/foreach}
如果您仍在使用Smarty2 - 您应该尝试使用{$chat.id}
语法访问您的数据,而不是使用括号。 (还有文档:http://www.smarty.net/docs/en/language.function.foreach.tpl)
{foreach from=$chats item=chat}
{$chat.id}
{/foreach}