Symfony2:致命错误:在非对象上调用成员函数loadTemplate()

时间:2016-01-19 14:25:11

标签: php symfony

我尝试将我的symfony2项目升级到symfony3(我已从twig 1.2迁移到twig 2.0,并升级其他一些捆绑包,如fos_user bundle,braincrafted / bootstrap bundle ...),我遇到错误:

Fatal Error: Call to a member function loadTemplate() on a non-object 

详细日志是:

DEBUG - Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController".
CRITICAL - Fatal Error: Call to a member function loadTemplate() on a non-object
CRITICAL - Uncaught PHP Exception Symfony\Component\Debug\Exception\FatalErrorException: "Error: Call to a member function loadTemplate() on a non-object" at /my/path/Symfony/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Form/TwigRendererEngine.php line 156 

包含表单块的第一个模板的错误触发器。如果我删除了表单块(例如{{form_start}}或{{form_widget(...)}}),则会出现另一个带有表单元素的模板的错误。

有没有人有想法帮助我?

提前致谢。

2 个答案:

答案 0 :(得分:0)

我已禁用BraincraftedBootstrapBundle。 我在TwigRendererEngine.php中添加了一个print_r

protected function loadResourcesFromTheme($cacheKey, &$theme)
{
    print_r($theme); // added for debug
    if (!$theme instanceof \Twig_Template) {
        /* @var \Twig_Template $theme */
        $theme = $this->environment->loadTemplate($theme);
    }
    ...

获取触发错误的模板名称。

似乎是“form_div_layout.html.twig”

当激活BraincraftedBootstrapBundle时,模板名称为BraincraftedBootstrapBundle:Form:bootstrap.html.twig(使用form_div_layout.html.twig)

这可以帮到你吗?谢谢

答案 1 :(得分:0)

我发现了一段时间的修复

我将我的作曲家从“sensio / distribution-bundle”:“5.0”更改为“sensio / distribution-bundle”:“~4.0”,似乎代码中有一些重大变化... < / p>

我仍然没有使用3.0版本,但现在它再次运行。