Php 如何设置SeoBundle和提取标题?

Php 如何设置SeoBundle和提取标题?,php,symfony,seo,Php,Symfony,Seo,我无法让SeoBundle从我的照片中提取标题 我已经在config.yml中配置了“content\u key” cmf_seo: content_key: "mykey" title: "%%content_title%%" 我的实体实现TitlerReadInterface class Picture implements TitleReadInterface { (...) public function getSeoTitle() {

我无法让SeoBundle从我的照片中提取标题

我已经在config.yml中配置了“content\u key”

cmf_seo:
    content_key: "mykey"
    title: "%%content_title%%" 
我的实体实现TitlerReadInterface

  class Picture implements TitleReadInterface {
  (...)

   public function getSeoTitle()
   {
      return $this->title;
   }

  (...)
}
在控制器中,我正在更新“mykey”属性:

public function viewAction(Request $request, $slug) {
    (...)

    $picture =  $repository->findOneBySlug($slug);

    $request->attributes->set('mykey', $picture);

    (...)

}
最后,我们认为:

 {{ sonata_seo_title() }}
但页面标题是“奏鸣曲项目”:
出什么问题了?

最后我发现,这个捆绑包与DynamicRouter配合使用效果更好,如果您不使用DynamicRouter(如我的案例),您必须以另一种方式提供内容对象。我的解决方案是从controller手动触发SEOPPresentation进程:

public function viewAction(Request $request, $slug) {
  (...)

  $picture =  $repository->findOneBySlug($slug);

  $seo = $this->get('cmf_seo.presentation');
  $seo->updateSeoPage($picture);

  (...)

}

真的吗?没人知道吗?看起来Symfony\Cmf\Bundle\SeoBundle\EventListener\ContentListener::onKernelRequest(GetResponseEvent$event)在controller::viewAction启动之前就启动了,请求中还没有“mykey”属性。。。