Отключить экранирование для действия списка генератора администратора?

Я настраиваю генератор администратора Symfony 1.4 для одной из моих моделей данных ("Достижение"). Модель данных «Достижение» имеет поле («url»), в котором хранится URL-адрес внешнего ресурса, и я хотел бы, чтобы этот URL-адрес отображался как ссылка в действии списка генератора администратора. По умолчанию генератор администратора отображает ссылку в виде простого текста. Я попытался написать функцию для украшения 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 экранирован, оставляя длинную уродливую строку. Я не могу понять, как отключить экранирование для этого поля.

Если я изменю «ESC_SPECIALCHARS» на «ESC_RAW» в «apps/backend/config/settings.yml», ссылка будет отображаться правильно. Нет ли более точного управления экранированием для Symfony 1.4?


person Daniel Standage    schedule 01.10.2012    source источник


Ответы (2)


Вы не должны генерировать HTML в модели. Вместо этого создайте помощник для этого и заставьте поле отображаться как partial и используйте в нем хелпер.

person 1ed    schedule 01.10.2012

Вы можете использовать sfConfig::set('sf_escaping_strategy', false) в своем контроллере (actions.class.php) для действия list. См. мой ответ на этот вопрос.

Но, как сказал 1ed, лучше сделать для этого помощника, а не писать html-код в контроллере.

person Vlad Jula-Nedelcu    schedule 01.10.2012