データモデルの 1 つ (「達成」) 用に Symfony 1.4 の管理ジェネレーターを構成しています。"Achievement" データ モデルには、外部リソースへの URL を格納するフィールド ("url") があり、この URL を admin ジェネレーター リスト アクションのリンクとしてレンダリングしたいと考えています。デフォルトでは、admin ジェネレーターはリンクをプレーン テキストとして表示します。URLをHTMLで装飾し、文字列が長すぎる場合はトリミングする関数を書いてみました(「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 のエスケープを細かく制御する方法はありませんか?