Php 如何使用smarty template engine保存模板并从数据库下载

Php 如何使用smarty template engine保存模板并从数据库下载,php,smarty,Php,Smarty,我很难将模板保存到数据库并下载内容以使用Smarty查看 我遵循Smarty.net上关于如何创建自定义检索类型的教程 我最初的方法是将tpl标记保存到db,然后下载它并将其作为变量传递给smarty指定的变量,然后在我的text.pl中执行类似{$source}的操作 但这会将其解析为字符串,smarty不会编译它 smarty网站上的教程没有帮助,只给我留下了更多的问题 这是我在教程的基础上尝试的 function db_get_template($tpl_name, &$tpl_s

我很难将模板保存到数据库并下载内容以使用Smarty查看

我遵循Smarty.net上关于如何创建自定义检索类型的教程

我最初的方法是将tpl标记保存到db,然后下载它并将其作为变量传递给smarty指定的变量,然后在我的text.pl中执行类似{$source}的操作

但这会将其解析为字符串,smarty不会编译它

smarty网站上的教程没有帮助,只给我留下了更多的问题

这是我在教程的基础上尝试的

function db_get_template($tpl_name, &$tpl_source, &$s)
{
    $tpl_name = "index.tpl";
    $tpl_source = nl2br($defaults->get_default_theme('theme_data'));
    return true;
}
function db_get_timestamp($tpl_name, &$tpl_timestamp, &$smarty)
{
    $tpl_timestamp = (int)time();
    //$tpl_timestamp = (int)$defaults->get_default_theme('modified_on');
    return true;
}

function db_get_secure($tpl_name, &$smarty)
{
    // assume all templates are secure
    return true;
}

function db_get_trusted($tpl_name, &$smarty)
{
    // not used for templates 
}
$s->registerResource("db", array( 
    "db_get_template",
    "db_get_secure",
    "db_get_trusted"
));
$s->display("db:index.tpl");

我不确定db:index.tpl是从哪里提取的。我不知道标记应该被加载到哪里…

我甚至觉得这样做有点脏,但是:

特别要注意display方法调用中传递的文件名的字符串:前缀。你可以简单地从你的数据库中提取模板数据——这是一个可怕的想法,IMNSHO,然后通过这种方式将其传递给Smarty。不需要构建自己的定制资源,除非您真的想这样做


一、 首先,我会敦促你保持它尽可能的愚蠢、丑陋和明显,提醒自己这是一个多么可怕、多么糟糕的主意。我想提醒您,Smarty编译为PHP,将Smarty代码放入数据库是执行任意代码的有效网关,这是一个严重的安全漏洞。

我也看到了这一点,我困惑的是如何显示tpl源代码。我在哪里输出它,如何输出。你说显示tpl源是什么意思?你什么意思?我把它放在哪里?这些说法是不可理解的。请重新阅读第一个链接文档页面,并尝试设置一个示例以了解其工作原理。呵呵,很抱歉我点击了你提供的错误链接。但是伙计,这完全解决了我的问题!