Twig, выходной выход и подсветка синтаксиса JS-плагинов

0

Я борюсь со следующей проблемой: я хочу включить некоторые примеры кода на свою страницу. Они в основном php, но также html и js.

Мой лучший вариант - использовать некоторые синтаксические выделения на основе js. Я выбираю SyntaxHighlighter, потому что многие люди рекомендуют это на SO и других сайтах.

Но как насчет выхода в прут? Конечно, побег по умолчанию приводит к тому, что код демонстрирует превосходное экранирование, но это не работает должным образом. Использование |raw для выполнения этой работы приводит к другой - очевидной проблеме: она разбивает страницу, если представлен html, или разбивает скрипты, если представлен javascript.

Другая проблема заключается в том, что все выходные данные, которые мне нужны, являются смешанными, например:

(some text, with html formatting)

<code class="someclass">
  (block of code)
</code>

(some another text)

<code class="anotherclass">
  (another block of code)
</code>

Имея все эти факты, я подумал - пусть напишет наш собственный фильтр для Twig! Это звучит здорово, но даже если бы я смог заставить его работать, я не мог бы работать так, как хочу.

Они подумали: зачем мне изобретать велосипед? Twig и Symfony2 уже много лет, возможно, кто-то еще решил эту проблему, и сделал это хорошо, безопасно.

Я ищу одну из четырех вещей:

  1. Пользовательский фильтр ветки для обработки этой проблемы или
  2. Лучший сценарий раскраски синтаксиса, который будет обрабатывать вывод, спрятанный Twig, или
  3. Некоторое другое решение, или
  4. Любой полезный намек.
  • 0
    Существует тег {% verbatim %} , может быть, это то, что вы ищете (?) Twig.sensiolabs.org/doc/tags/verbatim.html
  • 0
    И да и нет. Посмотрите мой пример содержимого переменной (text-code-text-code) - только код должен быть экранирован. jnunez предоставил интересный ответ, я дам ему шанс.
Теги:
twig
syntax-highlighting

1 ответ

1
Лучший ответ

Посмотрите на это руководство:

http://isometriks.com/geshi-symfony2-and-twig-extensions

Это сработало для меня.

  • 0
    Выглядит многообещающе! Я попробую, когда вернусь домой. Спасибо!
  • 0
    Через некоторое время у меня все заработало. Проблема, которую мне пришлось решить, это выяснить, что CSS не включен, поэтому мне пришлось написать свой собственный. В любом случае, спасибо! :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню