0

我正在为我的一个数据模型(“成就”)配置 Symfony 1.4 的管理生成器。“成就”数据模型有一个字段(“url”),用于存储指向外部资源的 URL,我希望此 URL 呈现为管理员生成器列表操作中的链接。默认情况下,管理员生成器将链接显示为纯文本。我尝试编写一个函数来用 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 是否没有更细粒度的转义控制?

4

2 回答 2

4

您不应该在模型中生成 HTML。而是为此创建一个辅助函数,并使字段呈现为部分并在其中使用辅助函数。

于 2012-10-01T21:21:12.073 回答
1

你可以sfConfig::set('sf_escaping_strategy', false)在你的控制器(actions.class.php)中使用list。请参阅我对这个问题的回答。

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

于 2012-10-01T22:26:32.857 回答