Задать вопрос

Как получить в twig код шаблона без его парсинга самим twig'ом?

У меня на сайте есть блоки подгружаемые ajax'ом. Их несколько. Часть из них требует подстановки каких то данных или генерации, часть нет - статический html-код. При открытии страницы посылается один ajax запрос на получение данных для всех этих блоков разом (затем в цикле вставляю данные по соответствующим блокам в страничке).

Для экономии ресурсов, те блоки, которые не требуют обработки/генерации twig'ом, я получаю таким образом: `'why-we' => $twig->load('public/partials/why-we.html.twig')->getSourceContext()->getCode()`. При этом, я так понимаю, семантического разбора шаблона twig не делает, по крайней мере весь twig код остается без изменений. Это работает в `dev` окружении, но почему-то не работает в 'prod' - в котором возвращается пустая строка вместо кода шаблона.

Я не понимаю почему это не работает, помогите пожалуйста! Может это вообще того и не стоит, и просто получать html-код так же как и генерируемый twig'ом, т.е. методом `$this->render('public/partials/xxx.html.twig')->getContent()`

Код контроллера
public function loadData(Request $request, \Twig_Environment $twig)
    {
        // проверяем на попытку добавить в URI посторонние параметры
        if ($request->getRequestUri() != $this->generateUrl($request->get('_route'))) {
            return $this->redirectToRoute('homepage', [], 301);
        }

        $results = [
            // just load HTML content
            'why-we' => $twig->load('public/partials/why-we.html.twig')->getSourceContext()->getCode(),
            'note-consult' => $twig->load('public/partials/note-consultation.html.twig')->getSourceContext()->getCode(),
            'advantages' => $twig->load('public/partials/advantages.html.twig')->getSourceContext()->getCode(),
            'faq-note' => $twig->load('public/partials/note-faq.html.twig')->getSourceContext()->getCode(),
            'faq-snippets' => $twig->load('public/partials/faq-snippets.html.twig')->getSourceContext()->getCode(),

            // render template
            'block-phone' => $this->render('public/partials/phone-under-content.html.twig')->getContent(),
        ];

        return $this->json($results);
    }
  • Вопрос задан
  • 174 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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