Lee*_*son 7 php caching symfony twig 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'));
Run Code Online (Sandbox Code Playgroud)
如果我按原样运行该代码,则过滤器不起作用.
相反,Twig返回PREVIOUS REQUEST的无限缓存版本(即使我清除缓存内容 - 我猜这是因为缓存存储在别处,因为我正在覆盖twig.options
......不确定).
但是,如果我抛弃以下行:
'twig.options' => array('cache'=>'folder/twig')
Run Code Online (Sandbox Code Playgroud)
......然后一切正常.
我怎样才能让这两个人玩得很好?即保持缓存并添加自定义过滤器?
谢谢!
Mae*_*lyn 20
您应该创建一个枝条扩展并在那里添加过滤器.
#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";
}
}
Run Code Online (Sandbox Code Playgroud)
如何注册:
#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;
}));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4450 次 |
最近记录: |