Silex渲染控制器里面的枝条错误

时间:2015-05-21 21:13:26

标签: symfony twig silex

我正在尝试使用以下内容在树枝模板中渲染控制器:

{{ 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()中的资产函数。

我不知道如何解决这个问题。

2 个答案:

答案 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函数,你需要将资产自定义函数调用到别的东西,因为错误说它已经被初始化了。