我有以下函数从文件中加载模板:
public function renderText($text, $data=[], $return=false) {
$template = $this->smarty->createTemplate('string: '.$text, null, null, $data);
if($return)
return $template->fetch();
else
$template->display();
}
我使用
加载带有所需变量的模板$this->renderText(Yii::app()->smarty->renderText($object->readData(), ['contract'=>$contract], true));
这适用于我的情况。但是,我需要扩展此功能,以便我可以从内存中加载此模板中的另一个模板。像{{include}}
这样的函数,但是我的应用程序特有的并且是从内存加载的。到目前为止,我有这个函数include_content
:
$template = Object::model()->findByAttributes(['name'=>$params['template']]);
echo $template->readData();
但是这并没有读取变量,只是像字符串一样打印它们:所以如果我有两个模板:
主要:{{include_content template="SomeBody"}}
SomeBody:{{$contract->id}}
如果我打开" Main",我需要它打印合同ID,而不是字符串" {{$ contract-> id}}",
我已经尝试过再次使用renderText函数,但该函数并没有在其中添加父模板的变量。我能做些什么来实现这个目标?
谢谢,
答案 0 :(得分:1)
也许你需要获取功能?它允许您解析smarty模板并将输出设置为变量。在Smarty手册中:http://www.smarty.net/docs/en/api.fetch.tpl