在处理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中错过了配置吗?
答案 0 :(得分:2)
此参数在Symfony本身不可用。
功能由 SyliusResourceBundle 提供,仅在Sylius控制器中可用。
显然_template
请求属性与SensioFrameworkExtraBundle冲突,后者使用相同的名称来存储对象。
我们必须将这些参数更改为一个配置节点,以避免将来出现此类问题。 您可以关注https://github.com/Sylius/SyliusResourceBundle存储库,修复程序应该今天到达。