【问题标题】:Disable escaping for admin generator list action?禁用管理员生成器列表操作的转义?
【发布时间】:2012-10-01 20:24:07
【问题描述】:

我正在为我的一个数据模型(“成就”)配置 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 是否没有更细粒度的转义控制?

【问题讨论】:

    标签: escaping symfony-1.4 admin-generator


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-01
        • 2011-07-13
        • 1970-01-01
        • 2019-05-01
        • 1970-01-01
        相关资源
        最近更新 更多