如何在.tpl文件中包含php代码

时间:2018-04-29 01:59:28

标签: php html smarty

我有一个小型的学校项目,我差不多完成了。但现在我必须改变我的工作代码并改用模板。我选择了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循环来实现它,但我想知道这是否是正确的方法呢?

2 个答案:

答案 0 :(得分:1)

使用{php}标签然后在其中包含php文件路径

{php}
  include('table.php');
{/php}

答案 1 :(得分:1)

你不应该在任何模板中注入php代码(不仅仅是Smarty)。加载数据并在php中执行逻辑并在模板中渲染。发动机。无需模板功能或在您的情况下包含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( ... );

TPL文件

<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>

利用模板引擎的优势。您可以使用三个模数而不是计数到两个,然后重置为零。

来源: