[英]Twig addFilter using Silex?
使用Silex時,將自定義過濾器連接到Twig的正確方法是什么,但保持現有的twig.options
不變?
這就是我的意思。 我有以下代碼:
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => dirname(__FILE__).'/view',
'twig.class_path' => dirname(__FILE__).'/vendor/twig/lib',
'twig.options' => array('cache'=>'folder/twig')
));
function test() {
return 'yay';
}
$app['twig']->addFilter('test',new \Twig_Filter_Function('test'));
如果我按原樣運行該代碼,則過濾器不起作用。
取而代之的是,Twig返回了PREVIOUS REQUEST的無限緩存版本(即使我清除了緩存內容-我猜這是因為緩存被存儲在其他地方,因為我正在覆蓋twig.options
...不確定)。
但是,如果我放棄以下行:
'twig.options' => array('cache'=>'folder/twig')
...然后一切正常。
我怎樣才能使兩個人打得更好? 即保留緩存並添加自定義過濾器?
謝謝!
您應該創建一個樹枝擴展名並在其中添加過濾器。
#src/Insolis/Twig/InsolisExtension.php (snippet)
<?php
namespace Insolis\Twig;
class InsolisExtension extends \Twig_Extension
{
public function getName() {
return "insolis";
}
public function getFilters() {
return array(
"test" => new \Twig_Filter_Method($this, "test"),
);
}
public function test($input) {
return "yay";
}
}
如何注冊:
#app/bootstrap.php
$app["twig"] = $app->share($app->extend("twig", function (\Twig_Environment $twig, Silex\Application $app) {
$twig->addExtension(new Insolis\Twig\InsolisExtension($app));
return $twig;
}));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.