在处理 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 中配置错误吗?