2010-05-17

在symfony中如何删除 head mate name=title

类归于: symfony — 标签:, szn000 @ 11:43

SYMFONY 自带的 生成标签的函数(setTitle()) 会默认生成一个 <META NAME=’TITLE’…>这样的一个 标签,这个标签会在 SETTITLE 里受影响 即 同时设置两个TITLE 一个是 <TITLE>一个是<META> 根据客户需求有些时候需要删掉 META NAME=’TITLE’ 这种,办法如下
新建MyProject/app/MyApp/lib/myWebResponse.class.php 文件
插入如下代码
class myWebResponse extends sfWebResponse
{
protected $title = null;
/*
* 在Web Response 里搜索Title
*
* 返回Title字符串
*/
public function getTitle()
{
return $this->title;
}
/*
* 设置Title为响应Title
*
* 参数 title string ,Title内容
* 参数 rscape boolean true, 用以确认是否格式化字符串
* 参数 replace boolean true, 用以确认是否覆盖字符串
*/
public function setTitle($title, $escape = true, $replace = true)
{
if (is_null($title))
{
unset($this->title);
return;
}
// 注意: 如果你使用i18n 曾转码 该判断将不会工作
// 查看 include_metas() 在源文件的 AssetHelper
if ($escape)
{
$title = htmlspecialchars($title, ENT_QUOTES, $this->options['charset']);
}
if ($replace || is_null($this->title))
{
$this->title = $title;
}
}
}

在文件MyProjiect/apps/MyApps/config/factories.yml
里使用 myWebResponse 替换 sfWebResponse
例如 在factories.yml中添加(替换成)如下代码
all:
response:
class: myWebResponse
param:
send_http_headers: false

上面代码中的all可以替换成相应的模式(生产,开发等)
执行 symfony cc (用于清理symfony产生的缓存文件)

注:该程序执行原理是重写了sfWebResponse setTitle 和 getTitle 两个方法
使setTitle 添加title的时候不添加 mate name = title
sfWebResponse setTitle源代码如下
public function setTitle($title, $escape = true)
{
$this->addMeta('title', $title, true, $escape);
}

随机日志

评论暂缺 »

还没有任何评论。

这篇文章上的评论 RSS feed TrackBack URL

留下评论

WordPress 所驱动