我有一个小型的学校项目,我差不多完成了。但现在我必须改变我的工作代码并改用模板。我选择了Smarty。 表显示表单中的数据。数据存储在文本文件中,每个元素都在新行上。一切都工作,但现在我无法弄清楚如何显示我的表。使用我当前的代码,我的页面变为白色。 我调试它并得到一个错误“已弃用,使用SmartyBC类启用”。我尝试设置新的smarty,我也尝试使用模板功能(插件),但我仍然得到白页。任何建议,将不胜感激! 我的table.php代码:($ items函数从文件中读取)
<?php
$count = 0;
if (isset($Items)){
foreach ($Items as $item) {
if($count == 0){
print "<tr><td>$item</td>";
$count += 1;
} else if($count == 1) {
print "<td>$item</td>";
$count +=1;
} else if($count == 2) {
print"<td>$item</td></tr>";
$count = 0;
}
}
}
tpl文件
<table>
<tr>
<th>Name</th>
<th>Lastname</th>
<th>Phone</th>
</tr>
{include_php file='table.php'}
</table>
编辑: 我使用了$ smarty = new SmartyBC();并更改为{php}标签。它不再显示白屏,但table.php代码不起作用 - 表格没有显示。
有更聪明的方法吗?除了包括php文件? 编辑:我通过在tpl中使用foreach循环来实现它,但我想知道这是否是正确的方法呢?
答案 0 :(得分:1)
使用{php}标签然后在其中包含php文件路径
{php}
include('table.php');
{/php}
答案 1 :(得分:1)
你不应该在任何模板中注入php代码(不仅仅是Smarty)。加载数据并在php中执行逻辑并在模板中渲染。发动机。无需模板功能或在您的情况下包含php。
// Initiate smarty
$smarty = new Smarty ...;
...
// Somehow load your data from file
$itemsFromFile = somehow_load_data_from_file( ... );
...
// PAss your data to Smarty
$smarty->assign('items', $itemsFromFile);
...
// Render your template
$smarty->display( ... );
<table>
<tr>
<th>Name</th>
<th>Lastname</th>
<th>Phone</th>
</tr>
{foreach $items as $key => $item}
{if $key % 3 == 0}
<tr>
{/if}
<td>$item</td>
{if $key % 3 == 2}
</tr>
{/if}
{/foreach}
</table>
利用模板引擎的优势。您可以使用三个模数而不是计数到两个,然后重置为零。
来源: