来自routing.yml的Symfony2模板配置

时间:2013-02-21 13:42:31

标签: symfony

在处理Sylius电子商务捆绑包时,我发现似乎是一种配置路由模板的方法,我不知道:

我已经在一个新的Symfony RC 2.2.0中测试了供应商的安装。 这将在routing.yml

_welcome:
    pattern:  /
    defaults:
      _controller: AcmeDemoBundle:Welcome:index
      _template: AcmeDemoBundle:Welcome:index # added by me

这会产生错误:

  

FatalErrorException:Error:调用成员函数getTemplate()   一个非对象   .... \ vendor \ sensio \ framework-extra-bundle \ Sensio \ Bundle \ FrameworkExtraBundle \ EventListener \ TemplateListener.php   第62行

现在,在TemplateListener中,我们拥有的是:

    if (!$configuration = $request->attributes->get('_template')) {
        return;
    }


    if (!$configuration->getTemplate()) {
        $guesser = $this->container->get('sensio_framework_extra.view.guesser');
        $configuration->setTemplate($guesser->guessTemplateName($controller, $request, $configuration->getEngine()));
    }

$ configuration是一个String,实际上是我放在routing.yml中的模板(AcmeDemoBundle:Welcome:index)。通过添加var_dump并检查ParameterBag进行检查 - > get方法是$request->attributes的方法。

因此。为什么TemplateListener期待一个对象?我错过了什么?我在routing.yml中错过了配置吗?

1 个答案:

答案 0 :(得分:2)

此参数在Symfony本身不可用。

功能由 SyliusResourceBundle 提供,仅在Sylius控制器中可用。 显然_template请求属性与SensioFrameworkExtraBundle冲突,后者使用相同的名称来存储对象。

我们必须将这些参数更改为一个配置节点,以避免将来出现此类问题。 您可以关注https://github.com/Sylius/SyliusResourceBundle存储库,修复程序应该今天到达。