Php 如何设置SeoBundle和提取标题?
我无法让SeoBundle从我的照片中提取标题 我已经在config.yml中配置了“content\u key”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() {
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”属性。。。