Smarty从子目录显示

时间:2015-01-07 17:43:02

标签: php templates smarty smarty3

我无法从子目录中显示tpl文件。

根目录中的php文件工作正常,但如果php文件位于子文件夹中,则显示方法无效。

我发现smarty中的模板路径是一个相对路径。所以对我来说,显示器无法工作是有道理的,因为路径是错误的。

所以我将模板路径设置为

$smarty->setTemplateDir($_SERVER['HTTP_HOST'].'/templates');

这是templates文件夹,它是根目录的一部分。

但它的绊脚石也不起作用。

任何想法? :/

编辑:

完整代码:

require('../../../model/smarty/Smarty.class.php'); 
$smarty = new Smarty();
include "../../../model/smarty/smarty_config.php";

var_dump($smarty->getTemplateDir());

$smarty->assign('dummy','Smarty Dummy Place');

$smarty->display('indexNotLoggedIn.tpl');

第一行中的Include是一个更改模板路径的临时解决方案。它就是这样做的:

$smarty->setTemplateDir($_SERVER['DOCUMENT_ROOT'].'/templates/');

2 个答案:

答案 0 :(得分:2)

您提供的内容如下:

$smarty->setTemplateDir('http://usrltowebpage.com/templates');

但你应该提供PATH而不是URL:

$smarty->setTemplateDir('/home/mywebpage.com/public_html/templates');

要更新: 为什么你在使用

$_SERVER['DOCUMENT_ROOT']

? - 你不能把真正的路径作为字符串传递?

答案 1 :(得分:0)

我得到了它的工作。 templates_c,configs和cache文件夹的路径也必须是绝对路径。