2015-01-07 38 views
0

我無法讓smarty從子目錄顯示tpl文件。來自子目錄的Smarty顯示

在根文件中的php文件工作得很好,但如果php文件在子文件夾中,則顯示方法不起作用。

我發現smarty中的模板路徑是相對路徑。所以對我來說,顯示不起作用是有道理的,因爲路徑是錯誤的。

所以我設置的模板路徑

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

這是模板文件夾是根目錄的一部分。

但它的stoll不工作。

任何想法? :/

編輯:

全碼:

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/'); 

回答

1

你提供這樣的事情:

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

,但你應該提供PATH不是一個網址:爲什麼你正在使用 :

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

更新

$_SERVER['DOCUMENT_ROOT'] 

? - 你不能把真正的路徑作爲一個字符串?

+0

好的,我改變了。所以我拋棄了我的模板路徑,它現在是/ var/www/my_project/templates /,這是正確的。 但顯示$ smarty-> display('index.tpl');仍然不起作用,即使它位於模板目錄的根目錄中。 :/ –

+0

var_dump($ smarty-> getTemplateDir());看看它是否設置正確 – violator667

+0

這是正確的。正如我上面提到的,現在的路徑是/ var/www/my_project/templates /。但是顯示tpl仍然不起作用 –

0

我明白了。 templates_c,configs和cache文件夾的路徑也必須是絕對路徑。