Коль скоро в symfony 1.3/1.4 по умолчанию включено экранирование (escaping) всех выводимых данных, вам рано или поздно понадобится вывести что-либо в неэкранированном виде. Судя по постоянным вопросам в коммьюнити, не все могут найти документацию по этому вопросу, поэтому публикую эту небольшую заметку.
Итак, во-первых, в помощь вам EscapingHelper. Подключить его можно так:
<?php use_helper('Escaping'); ?>
Это даст нам возможность использовать такие методы как:
string esc_entities($value)
Применяет htmlentities к $value.string esc_js($value)
Экранирование в C-стиле переданного значения, после того как будет выполнено {@link esc_entities()}.string esc_js_no_entities($value)
Экранирование в C-стиле переданного значения.string esc_raw($value)
А это как раз то что нам нужно – вывод неэкранированного значения.-
string esc_specialchars($value)
Применяет htmlspecialchars к $value.
Итак, если нам нужно просто вывести что-то, не экранируя, мы применяем esc_raw()
.
Но, зачастую, нужно выводить не экранируя, значения из базы данных.
Для Doctrine, если мы получим значение через array access ($model[‘field’]) или как параметр объекта ($model->field), значение будет экранировано.
К счастью, доктрина имеет магические аксессоры к полям класса типа getField
(реализовано через __call()
) и мы можем сделать такой вызов:
<?php echo $model->getField(ESC_RAW); ?>
Что поможет вам добиться нужного результата.
Надеюсь был полезен
Оно же в моем блоге на хабре )) http://hudson.habrahabr.ru/blog/86024/
hudson.su – оказывается ещё и полезный )
А то
во view неэкранированные данные можно выводить так:
echo $model->getRaw(‘field’)
Вы видимо не дочитали статью ) Там об этом тоже есть (но немного в другом формате):
<?php
echo $model->getField(ESC_RAW);
?>
а если нужно вывести чего-то неэкранированное в backend где все задается через generator.yml, как быть?
Смотря что и где. В списке можно использовать партиалы и компоненты. Или же переопределить какой-то конкретный шаблон.
До сих пор полезная статейка)
Ну кто бы мог подумать ) Я уже и забыл как оно там в sf1.x было то…