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

Как отдать html-шаблон с переменными с помощью Symfony Response?

Вопрос такой: есть самописный блок для Concrete5 CMS, в контроллере функция, которую дёргают аяксом.

Проверяем кеш, если нет, то парсим шаблон, записываем результат в переменную,
кеширеум и отаем в Response.

public function action_article($blockId = null, $feedId = null)
    {

        $cache = \Core::make('cache/expensive'); 
        $articleData = $cache->getItem('Article/' . $feedId);

        if ($articleData->isMiss()) {
            $articleData->lock();

            // Тут поскипана часть логики
            
            $title = $post->getTitle();
            $date = $this->formatDateTime($post->getDateCreated());
            $description = substr($post->getDescription(), 0, 250) . '...';
            $content = $crawler->filter($this->captureContentFromTag)->html();
            $image = $crawler->filter($this->captureImageFromTag)->attr('src');

            ob_start();
            include('views/article.php'); // тут шаблон HTML с переменными
            $output = ob_get_clean();

            $cache->save($articleData->set($output)->expiresAfter($this->parsingResultsExpirationTime));
        } else {
            $output = $articleData->get();
        }

        $response = new Response();
        $response->headers->set('Content-Type', 'text/html');
        $response->setStatusCode(Response::HTTP_OK);
        $response->setContent($output);

        return $response;
    }


Всё это работает нормально, смущает только кусок

ob_start();
include('views/article.php'); // тут шаблон HTML с переменными
$output = ob_get_clean();


Нет ли другого способа распарсить шаблон, и сохранить результат в переменную?
И в целом, выслушаю любые замечания по коду.
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
dmitriy91
@dmitriy91
Попробуйте данный вариант:
$output = $this->render('path/to/template/template.html.twig', ['parameter_1' => $parameter1]);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽