禁用转义管理生成器列表操作?

时间:2012-10-01 20:24:07

标签: escaping symfony-1.4 admin-generator

我正在为我的一个数据模型(“Achievement”)配置Symfony 1.4的管理生成器。 “Achievement”数据模型有一个字段(“url”),用于存储外部资源的URL,我希望此URL在管理生成器列表操作中呈现为链接。默认情况下,admin生成器将链接显示为纯文本。我尝试编写一个函数来用HTML装饰URL,如果它太长则修剪字符串(添加到“lib / model / doctrine / Achievement.class.php”)。

function getLink()
{
  $text = $this->getUrl();
  if(strlen($text) > 40)
  {
    $text = sprintf( "%s...%s", substr($text, 0, 20), substr($text, -20, 20) );
  }

  return sprintf('<a href="%s">%s</a>', $this->getUrl(), $text);
}

不幸的是,在管理生成器列表视图中,HTML被转义,留下了一个长丑陋的字符串。我无法弄清楚如何禁用此字段的转义。

如果我在“apps / backend / config / settings.yml”中将“ESC_SPECIALCHARS”更改为“ESC_RAW”,则链接会正确呈现。对于Symfony 1.4,是否没有更精细的转义控制?

2 个答案:

答案 0 :(得分:4)

您不应在模型中生成HTML。而是为此创建一个helper函数,并将字段呈现为partial并使用其中的帮助程序。

答案 1 :(得分:1)

您可以在控制器中使用sfConfig::set('sf_escaping_strategy', false)(actions.class.php)进行list操作。请参阅我对this问题的回答。

但是,就像1ed所说的那样,你最好为此做一个帮助,而不是在控制器中编写html代码。