0

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

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

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

这会产生一个错误:

FatalErrorException: 错误: 调用 .... \vendor\sensio\framework-extra-bundle\Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener.php 中的非对象的成员函数 getTemplate() 第 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)中放的模板。通过添加 avar_dump并检查 ParameterBag -> get 方法来检查它是什么$request->attributes

所以。为什么 TemplateListener 需要一个对象?我错过了什么?我在 routing.yml 中配置错误吗?

4

1 回答 1

2

Symfony 本身没有这个参数。

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

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

于 2013-02-28T12:53:16.900 回答