NikitOS_MV
@NikitOS_MV
Король шутов

Проблема с отображением в twig?

Hi!

Столкнулся с проблемой
Делал некую локализацию на сайте, фразы локализации хранятся в бд, по требованию достаются.
Во фразах может быть html и какие - то переменные, которые передаются в шаблон.
С переменными разобрался, смог впихнуть, а как быть с html?

html обрабатывается если выводить фразу через echo, но тогда не рабоатет replace твига (чтобы подставить переменные), если же фразу пихать через return - все наоборот: нет обработки html, но есть переменные
А если использовать return - все наоборот..

Куски кода и примеры тут: https://codeshare.io/21yd3B
  • Вопрос задан
  • 204 просмотра
Решения вопроса 1
NikitOS_MV
@NikitOS_MV Автор вопроса
Король шутов
Ответ был на видном месте, но я затупил, а через пару дней нашел ответ, но про вопрос вспомнил только сейчас
Вдруг кому-то пригодится
<p>{{ phrase('user_email_confirmation_body_html')|replace({'%username%': 'Evgen', '%board%': option('board_title') })|raw }}</p>


Т.е решается добавлением фильтра raw в конце
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Exomode
@Exomode
Архитектор ПО
1) Пишете функцию замены переменных для расширения Twig:
$prepareString = new Twig_SimpleFunction('prepareString', function ($str) {
  return str_replace("%param1%", "Тест", $str);
});


2) Добавляете её в расширения:
$twig->addFunction($prepareString);

3) В шаблоне вызываете функцию где нужно:
<span>{{ prepareString("Ваша строка с '%param1%'") }}</span>


В $prepareString можете писать всю необходимую вам логику замены переменных. На регулярках, на переборе словаря, через str_replace как в моем примере или любым другим способом. Данные для подмены предварительно формируете из БД или любым другим способом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы