我坚持使用Smarty(我认为3.1.16)用于大学项目。 我有这个目录结构:
+ templates/
+ -- application.tpl
+ -- backend.tpl
+ -- backend/
+ ---- blog.tpl
内部templates/backend.tpl
我有一个{extends 'application.tpl'}
,当我加载backend.php
并呈现此文件时,它会正常工作。
在templates/backend/blog.tpl
内,我有一个{extends '../backend.tpl'}
。当我访问backend/blog.php
(加载templates/backend/blog.tpl
)时,我收到此错误:
Unable to read template file 'application.tpl'
出现此错误的原因是什么?
答案 0 :(得分:0)
据我所知,此时设置的路径是相对于设置的模板目录,而不是文件本身。
因此../backend.tpl
变为templates/../backend.tpl
如果您设置了单个模板文件夹(“模板”),则在替换
时应该可以使用{extends '../backend.tpl'}
与
{extends 'backend.tpl'}
您还可以定义多个模板目录,并通过数组索引(可选)对其进行标识。 使用setTemplateDir方法为此行为设置smarty
$smarty->setTemplateDir(array(
'frontend' => 'templates',
'backend' => 'templates/backend'
));
在模板中,您现在可以使用smarty文件protokol来包含/扩展特定目录中的模板,如此
{extends 'file:[backend]blog.tpl'}