- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在使用 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')
...然后一切正常。
我怎样才能让这两个玩得很好?即保留缓存并添加自定义过滤器?
谢谢!
最佳答案
您应该创建一个 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;
}));
关于php - 使用 Silex 的 Twig addFilter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9504309/
我正在编写一个 Web 应用程序,它有一个前置网站,然后是一个管理控制台。我希望能够有一个设置,当设置为 true 时,意味着在前端网站上显示一个保留或维护页面。 我的路由配置目前在一个 yaml 文
我正在我的 app.php 文件中做这样的共享服务: $app['rules'] = $app->share(function() use($app) { return new MyProje
这是一个关于第一次使用 Silex 的非常基本的问题。 我要安装this project链接自 this tutorial .我已经按照 these instructions 通过 Composer
我正在使用 Silex 1.1 和 Monolog 1.0.0。我的代码和我的问题: $app->register(new Silex\Provider\MonologServiceProvider(
我环顾四周,似乎无法弄清楚如何在使用 Silex 时链接到静态文件。我已经看到一些关于 Symfony 的类似问题/答案,但它们涉及 YML 路由文件,我不将其与 Silex 一起使用。 我的情况 我
我环顾四周,似乎无法弄清楚如何在使用 Silex 时链接到静态文件。我已经看到一些关于 Symfony 的类似问题/答案,但它们涉及 YML 路由文件,我不将其与 Silex 一起使用。 我的情况 我
我在 Silex 中定义了几个路由,但我不知道如何捕获不存在的路由。 例如: $app->get('/category/{name}', 'Acme\Controller\Main::category
我想将 Silex 与 MongoDB 一起使用。我想最好的方法是使用再次使用 Doctrine MongoDB 库的 Silex 扩展。 现在有两个 Silex Extensions 似乎提供了这个
我安装了 phpunit 3.6.12 和 Silex。在我的应用程序的根目录中,我有包含简单测试文件 BlogFunctionTest.php 的测试目录 assertGreaterThan(0,
我最近将一切正常的 Silex v1.3 项目迁移到了 Silex v2。我收到一个 Twig 错误,我不明白原因 Twig_Error_Runtime in Template.php line 59
我正在开发一个带有 silex-skeleton 的最新版本的项目。尝试使用 share 方法时显示以下错误: 代码: $app['login'] = $app->share(function() u
我有一个大问题,我不知道为什么 silex 异常处理程序不捕获异常? 我的简单代码如下所示: error(function (\Exception $e, $code) { exit('asd');
在 Symfony 中,可以通过在 security.yml 文件中添加 invalidate_session: false 来避免 session 在注销时被破坏。 遗憾的是,这在 Silex 中不
我尝试使用 silex 文档为 LDAP 身份验证编写自定义身份验证提供程序 - Defining a custom Authentication Provider . 但如果我查看 $app['se
我想要一条匹配“任何东西”的路线。如果数据库中存在具有给定路径的页面,我想从“任何”值中查找。如果是,则需要处理此路由,否则应处理下一个匹配的路由。 有没有简单的方法可以解决这个问题,还是我错过了路线
我试图在 Controller 上设置错误处理程序,以捕获可能导致页面故障的所有内容。例如:在这种情况下,我试图捕获我的方法使用错误的参数调用外部API后可能发生的任何错误,但是除了给我提供典型的Cl
Silex 中是否可以根据抛出的异常使用错误处理程序? 我知道这可以通过单个异常处理程序和抛出异常的类名上的 switch 语句来实现,但对我来说,“Silex 方式”似乎更干净,但不起作用。 这就是
我的目标是将FOQElasticBundle与我的Silex网站链接。 问题是FOQElasticBundle的documentationn声明我只需要在config.yml文件中放入一些基本内容即可
有没有我可以通过 $app 变量 (Silex\Application) 调用的函数来访问 Web 根目录和应用程序根目录? 假设我的项目布局是这样的 /src run() 在 src/cont
我的路由有三个参数,userid 总是必需的,a 和 b 是可选参数。可以给出 a or (a and b) or (neither a nor b): $app->get('/show/{useri
我是一名优秀的程序员,十分优秀!