我目前使用v1.12.2 Twig作爲獨立模板引擎。twig:如何在不使用symfony的情況下添加Twig擴展文件
我寫了一個枝條擴展名爲Utility_Twig_Extension在一個名爲UtilityExtension.php
文件和index.php文件
//index.php
require_once '../vendor/twig/twig/lib/Twig/Autoloader.php';
Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem(OEBPS);
$twig = new Twig_Environment($loader, array(
'cache' => APP . DS . 'cache',
));
require_once '../vendor/twig/twig/ext/utility/UtilityExtension.php';
$twig->addExtension(new Utility_Twig_Extension());
這裏是UtilityExtension.php //UtilityExtension.php 命名空間UtilityTwigExtension;
class Utility_Twig_Extension extends Twig_Extension
{
public function getName()
{
return "utility";
}
}
這裏是我的目錄結構:
src
|__app
| |__ index.php
|__vendor
|__twig
|__twig
|__ext
|__lib
我甚至無法正確加載該文件。
我已經將問題追溯到擴展類嘗試擴展Twig_Extension.php的事實。
所以我require_once
Twig_Extension是UtilityExtension.php中的Extension.php文件。但是,仍然無法正常工作。
大多數文檔都是關於在Symfony上下文中添加自定義Twig Extension的文章。
我正在使用樹枝獨立,所以我還沒有找到任何文件。
請指教。
UPDATE1:
如果不工作,我的意思是我得到的500服務器錯誤。我運行error_reporting(E_ALL)是無濟於事。
當我從擴展類中刪除單詞extends Twig_Extension
時,錯誤得到了解除。
UPDATE2: 我意識到這是一個命名空間問題。因爲我從UtilityExtension.php中刪除了namespace UtilityTwigExtension;
,並且服務器500錯誤消失了。
所以我把namespace UtilityTwigExtension;
回來,然後調用
require_once '../vendor/twig/twig/ext/utility/UtilityExtension.php';
$twig->addExtension(new UtilityTwigExtension\Utility_Twig_Extension());
錯誤回來。
問題:如果我堅持使用命名空間,如何調用TwigExtension?有沒有更好的使用名稱空間的方法?
UPDATE3:
我仍然得到服務器500試圖Luceos答案後。
error_reporting(E_ALL);
require_once 'constants.php';
require_once 'ZipLib.php';
require_once '../vendor/twig/twig/lib/Twig/Autoloader.php';
Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem(OEBPS);
$twig = new Twig_Environment($loader, array(
'cache' => APP . DS . 'cache',
));
require_once '../vendor/twig/twig/ext/utility/UtilityExtension.php';
use UtilityTwigExtension\Utility_Twig_Extension;
$twig->addExtension(new Utility_Twig_Extension());
UtilityExtension。PHP
namespace UtilityTwigExtension;
class Utility_Twig_Extension extends Twig_Extension
{
/**
* Returns the name of the extension.
*
* @return string The extension name
*/
public function getName() {
return 'utility';
}
}
[此頁](http://twig.sensiolabs.org/doc/advanced.html)樹枝網站上展示瞭如何做到這一點,並沒有提到symfony。第一個谷歌搜索結果爲「Twig add extension」 – 2013-03-13 12:29:37
我遵循了那裏的步驟。除非我忽略了什麼? – 2013-03-13 12:30:54
是的,但你意識到你的擴展實際上並沒有任何東西,對吧?你怎麼知道它沒有被加載? 「它不工作」__不是有用的。 – 2013-03-13 12:32:06