У меня есть этот код 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>
Но даже с этим кодом все, что я получаю, это белая страница
Вы должны проверить документацию: http://www.smarty.net/docs/en/language.function.foreach.tpl
Вы должны поместить $
перед вашей переменной. Также синтаксис item=
устарел в Smarty3, который я предполагаю, что вы используете, поскольку в вашей публикации нет ссылки на устаревший Smarty2.
{foreach $chats as $chat}
{$chat['id']}
{/foreach}
Если вы все еще используете Smarty2 в любом случае - вы должны попытаться получить доступ к вашим данным с {$chat.id}
синтаксиса {$chat.id}
вместо использования скобок. (Также в документах: http://www.smarty.net/docsv2/en/language.function.foreach.tpl)
{foreach from=$chats item=chat}
{$chat.id}
{/foreach}
foreach
страница работает? Я имею в виду проблему действительно вforeach
? Можете ли вы попробовать так{$chat.id}