0

データモデルの 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 のエスケープを細かく制御する方法はありませんか?

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 に答える