Smarty: как включить php в шаблон? - PullRequest
3 голосов
/ 08 июля 2011

Я пробовал теги {include_php file="phpfile.php"} и {php}, но оба вызывают устаревшую ошибку. Разве ты не можешь больше делать это в Smarty? Я ничего не могу найти в документах.

Ответы [ 3 ]

2 голосов
/ 08 июля 2011

Они обесцениваются по причине, поскольку они допускают плохую практику.Smarty рекомендует помещать включенный скрипт в логику PHP или создавать плагин (что просто).

{php} не рекомендуется использовать в Smarty и не должен использоваться.Вместо этого поместите свою логику PHP в сценарии PHP или функции плагинов.

Источник

{include_php} устарел в Smarty, для правильной работы используйте зарегистрированные плагиныизолировать представление от кода приложения.

Источник

Если вы включите то, что вы пытаетесь сделать, в свой phpfile.php, мы можем помочь вам написатьфункция плагина.

2 голосов
/ 08 июля 2011

Я обошел эту проблему.Создайте файл плагина с именем block.php_code.php с этой функцией:

function smarty_block_php_code($params, $content, &$smarty)
{
    if (is_null($content))
    {
        return;
    }
    if ('<?php' == substr($content,0,5) && '?>' == substr($content, -2))
        $content = substr($content,5,-2);
    ob_start();
    eval($content);
    return ob_get_clean();
}

В своем шаблоне вы можете написать:

{php_code}{literal}<?php

    print "Hello, world!";

?>{/literal}{/php_code}
0 голосов
/ 08 июля 2011
...