【问题标题】:Symfony2 : Fatal Error: Call to a member function loadTemplate() on a non-objectSymfony2:致命错误:在非对象上调用成员函数 loadTemplate()
【发布时间】:2016-01-19 14:25:10
【问题描述】:

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

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(...)}}),则会出现另一个带有表单元素的模板的错误。

有没有人想办法帮我?

提前致谢。

【问题讨论】:

  • 您使用任何表单主题吗?您是否尝试禁用它们?如果你{{ dump(form) }},你看到格式正确的表格了吗?
  • “表单主题”是什么意思?我使用了braincrafted/bootstrap 捆绑包,但很明显,当它被禁用时我会遇到同样的错误如果我{{dump(form)}},我会在屏幕上看到转储详细信息,但下面仍然有同样的错误......
  • 嗯,表单主题是用于自定义表单呈现的树枝模板。它可以直接在 twig 文件中定义,或者如果您将其应用于所有表单,则可以在配置中定义。 Braincrafted bootstrap bundle 使用了一个,您是否尝试将其从您的 config.yml 中删除?它看起来像:twig: form: resources: - BraincraftedBootstrapBundle:Form:bootstrap.html.twig
  • 是的,我已经尝试禁用它,但不幸的是没有任何改变......
  • 对不起,没有更多的想法......

标签: php symfony


【解决方案1】:

我已禁用 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)

这对你有帮助吗?谢谢

【讨论】:

    【解决方案2】:

    我暂时找到了解决办法

    我已经将我的作曲家从“sensio/distribution-bundle”:“5.0”更改为“sensio/distribution-bundle”:“~4.0”,看来代码有很大的变化......

    我还没有使用 3.0 版,但现在它又可以使用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-25
      • 2012-05-30
      • 2016-08-30
      • 2015-02-06
      • 2012-05-14
      • 2013-11-19
      • 2017-04-30
      相关资源
      最近更新 更多