Содержимое буфера Symfony в шаблоне ветки

У меня есть контроллер, который запускает длинную службу, которая выводит разные сообщения в ob_implicit_flush и ob_end_flush ...

Мой вопрос в том, как я могу сбросить этот контент в шаблон веточки ...

Это контроллер:

<?php
namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use App\Sync\Incomming\Syncronize;


/**
* @Route("/sync")
*/
class SyncController extends AbstractController
{
    private $syncronize;
    public function __construct(Syncronize $syncronize)
    {
        $this->syncronize = $syncronize;

    }
    /**
     * @Route("/",name = "sync_index")
     */
    public function index(Request $request)
    {  


        ini_set('memory_limit', '-1');
        ini_set('max_execution_time', 300);
        header('X-Accel-Buffering: no');
        ob_implicit_flush(true);
        $this->syncronize->updateData();
        ob_end_flush(); 
        /*How can i pass this content to the twig template ?*/
        return $this->render( 'sync/output.html.twig', ['message' => "" ]); 

    }

}

А вот инструмент для отправки сообщений:

namespace App\Tools;

class Message
{
    static function write( string $msg, $level = 1 )
    {
        $levels=[
            '-',
            '  |_',
            '    |_',
            '      |_',
            '        |_',
        ];
        ob_implicit_flush(true);
        echo $levels[$level] . $msg . PHP_EOL;
        return ob_flush();
    }

}

Любые идеи ? Спасибо...

Из того, что я предполагаю, вам нужно будет запустить updateData внутри вашего шаблона. Это потому, что функция рендеринга не будет вызываться, пока эта задача не завершена.

DarkBee 09.09.2018 15:47
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
1
315
1

Ответы 1

В действии индекса вместо вызова ob_end_flush() вы можете вызвать $messages =ob_get_flush().

Это также остановит буферизацию вывода, но вернет содержимое буфера в виде строки, которую вы затем можете использовать в своем шаблоне веточки.

Проблема в том, что я не хочу останавливать буферизацию ... Я видел в документации по tiwg блок {% flush%}, но не могу найти способ буферизовать

3pepe3 09.09.2018 13:57

Другие вопросы по теме