我正在尝试使用以下内容在树枝模板中渲染控制器:
{{ render(url('contact_form')) }}
但是我收到了这个错误:
在呈现模板期间抛出异常(“无法添加函数”资产“因为扩展已经初始化。”)
我有一个名为asset的twig函数,如下所示:
$app['twig'] = $app->extend('twig', function ($twig, $app) {
// add custom globals, filters, tags, ...
$twig->addFunction(new \Twig_SimpleFunction('asset', function ($asset) use ($app) {
return $app['request_stack']->getMasterRequest()->getBasepath().'/'.$asset;
}));
return $twig;
});
似乎silex试图再次添加render()中的资产函数。
我不知道如何解决这个问题。
答案 0 :(得分:1)
我不得不通过使用try / catch块包装它来忽略错误,以使其正常工作。这是一个肮脏的解决方案,但工作。
try {
$twig->addFunction(new \Twig_SimpleFunction('asset', function ($asset) use ($app) {
return $app['request_stack']->getMasterRequest()->getBasepath().'/'.$asset;
}));
} catch (Exception $e) {
// do nothing
}
答案 1 :(得分:-1)
已经有一个称为资产的twig函数,你需要将资产自定义函数调用到别的东西,因为错误说它已经被初始化了。