如何在Yii中使用模板引擎?

时间:2016-03-06 17:38:14

标签: php yii2 twig smarty template-engine

我想用Yii编写一个程序,以便用户可以拥有他们的模板。

我的解决方案是每个用户都在数据库中有一条记录来保存自定义模板,如HTML代码和一些语法,如Smarty或Twig。

如何使用PHP获取记录并将其打印在屏幕上,我的模板引擎会提取语法并显示最佳效果?这有可能吗?我该怎么做?

真的你知道如果你把php代码保存在数据库中,当你把它们打印成文件时,你保存在数据库中的php代码不会运行。 对我来说最重要的是在数据库whit php命令中保存模板然后在文件中回显它们并且通常运行相同的php代码。

但使用smarty或twig非常重要,不要让用户直接添加php代码。

2 个答案:

答案 0 :(得分:1)

对于用户界面模板,您可以在Yii中使用不同的布局。只需将不同的布局模板放在./views/layouts文件夹中:

./views/layouts/main-template-1.php
./views/layouts/main-template-2.php
./views/layouts/main-template-3.php

并在执行操作时选择控制器中的布局,具体取决于控制器中应知道的用户。

编辑:如果不从用户上传布局文件,您可以从数据库(HTML骨架)加载模板代码,然后在Controller中放置布局和视图代码:

$contentWithoutLayout = $this->renderPartial('myview',...);
return $this->applyLayout(contentWithoutLayout, $layoutFromDb);

其中applyLayout()是合并布局和查看内容的方法。

答案 1 :(得分:0)

我找到了答案。 只需保存数据库中的所有内容,加载它们时使用eval()函数。 请参阅php和w3school中的文档。