NikitOS_MV
@NikitOS_MV
Иномирянин

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

Hi!

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

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

Куски кода и примеры тут: https://codeshare.io/21yd3B
  • Вопрос задан
  • 111 просмотров
Решения вопроса 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 как в моем примере или любым другим способом. Данные для подмены предварительно формируете из БД или любым другим способом.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы