Мне нужно заменить строку в поле зрения после рендеринга. Все мои контролеры используют аннотацию @Template ("путь").
Мой контроллер:
...
class AboutController extends Controller
{
/**
* @Route("/about-us", name = "about")
* @Method("GET")
* @Template("@AppBundle/Resources/views/About/index.html.twig")
*/
public function indexAction()
{
}
}
...
Я знаю, что нужно делать это без аннотации:
...
class AboutController extends Controller
{
/**
* @Route("/about-us", name = "about")
* @Method("GET")
*/
public function indexAction()
{
$content = $this->renderView('AppBundle/Resources/views/About/index.html.twig', []);
$content = str_replace('my text', 'my new text', $content);
return new Response($content);
}
}
...
Как я могу это сделать с помощью аннотации (@template)?
веб-сайт большой, и я должен заменить все ссылки на хеш js, если ссылка является другим доменом :)




Думаю, стоит использовать Система событий SymfonyonKernelResponse
Это позволит вам получить ответ после того, как действие контроллера вернет его, и изменить ответ перед его отправкой.
Чтобы подписаться на событие, следуйте Пример документа Syfmony. Вы не сказали нам, какую версию Symfony вы используете, это ссылки 3,4.
Надеюсь это поможет.
Хорошее решение! Спасибо!
Разве не имеет смысла использовать переменные внутри ваших файлов twig?