Как включить php-код в файл .tpl - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть небольшой школьный проект, который я почти закончил. Но теперь я должен изменить свой рабочий код и использовать вместо него шаблон. Я выбрал 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>

Edit: Я использовал $ smarty = new SmartyBC (); и изменил теги {php}. Он больше не показывает белый экран, но код table.php не работает - таблица не отображается.

Есть ли более разумный способ сделать это? Кроме включения php файла? Редактировать: я получил это с помощью цикла foreach внутри TPL, но мне интересно, если это правильный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Вы не должны вставлять 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>

Используйте преимущества шаблонного движка. Вы можете использовать модуль три вместо того, чтобы считать до двух и затем сбрасывать до нуля.

Источники:

0 голосов
/ 29 апреля 2018

Используйте тег {php}, затем включите в него путь к файлу php

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