2016-07-29 2 views
0

Мне нужно заменить некоторый контент в каждом файле. Но контент во многих местах - это просто текст, а не переменная, я не могу использовать фильтр variable|replace().Symfony and Twig, prerender, parse view, replace content

Есть ли способ получить представление (например, в контроллере) до отображения, чтобы я мог передать его какой-либо функции и вернуться к готовности для отображения содержимого? Или, может быть, есть способ заменить весь контент в теге block?

+1

$ this-> RenderView (twigname, массив ('text_to_replace' => $ текста) Это то, что вы ищете – jonju

+1

Почему вы не просто? изменить свои взгляды и сделать его переменной? – NDM

ответ

1

Контроллер Symfony имеет 2 функции render() и renderView(), первый отображает представление и возвращает Response, последний просто отображает представление и возвращает результат строки.

, чтобы вы могли в своем действии:.

$content = $this->renderView('my-view.html.twig', [...]); 

$content = str_replace('my text', 'my new text', $content); 

return new Response($content); 
+0

Это он! Эта работа точная, как мне это нужно :) – unbreak