Symfony1 Symfony 1.4中的动态页面标题

Symfony1 Symfony 1.4中的动态页面标题,symfony1,metadata,response,action,title,Symfony1,Metadata,Response,Action,Title,我想知道是否有人对在Symfony中设置动态元标题有什么好的建议/经验 目前,我知道的解决方案是使用以下代码在每个操作中单独设置标题: $this->getResponse()->setTitle('This is a title'); 因为我还需要翻译的标题,所以我可以在操作中调用i18n助手,以将它们包含在提取的xliff中。没有特殊的搜索引擎优化的东西需要,只是一个干净的标题 然而,以上确实要求我分别调整每个动作。View.yml不适合,因为我经常在每个模块中使用多个操作/模

我想知道是否有人对在Symfony中设置动态元标题有什么好的建议/经验

目前,我知道的解决方案是使用以下代码在每个操作中单独设置标题:

$this->getResponse()->setTitle('This is a title');
因为我还需要翻译的标题,所以我可以在操作中调用i18n助手,以将它们包含在提取的xliff中。没有特殊的搜索引擎优化的东西需要,只是一个干净的标题

然而,以上确实要求我分别调整每个动作。View.yml不适合,因为我经常在每个模块中使用多个操作/模板

是否有人知道Symfony有更好的方法,或者这确实是正确的/唯一的方法


谢谢。

我认为在每个动作中分别写标题是可以的。但如果您想添加一些全局前缀,可以在布局中使用如下内容:

<title>SITE NAME — <?= $sf_response->getTitle() ?></title>
站点名称-
您还可以在操作中使用preExecute()方法操作每个模块的标题。

您应该使用

在布局
标记中:

<title><?php echo get_slot('page_title', __('Default page title here')) ?></title>

在动作模板中:

<?php slot('page_title', __('Action page title goes here')) ?>

我个人喜欢使用yml文件,它将“配置”与代码分开

要处理动态标题,请执行以下操作:

在apps/frontend/config/app.yml中

all:
  title_separator: ' - '
  title_default: 'TITLE'
在apps/frontend/config/view.yml中

default:
  metas:
    title: %APP_TITLE_DEFAULT%
如果需要将操作中的数据放入标题中,请创建包含以下内容的文件lib/myActions.class.php:

<?php

class myActions extends sfActions
{

    protected function setTitle($string)
    {
        $this->getResponse()->setTitle($string . sfConfig::get('app_title_separator') . sfConfig::get('app_title_default'));
    }

}

?>
无论什么时候你需要更改标题,只要在行动中调用它

$this->setTitle('This is how I roll');
您将获得以下标题(如果使用与上面相同的配置):


使用preExecute方法不是一种很好的方法,因为它会将标题逻辑绑定到控制器。它应该在视图中,因为它是表示层的一部分,而不是控制器。
$this->setTitle('This is how I roll');
This is how I roll - TITLE
$i18n = $this->getContext()->getI18N();
$this->getResponse()->setTitle('Your title' . ' | ' . $i18n->__('your module name'));