Содержимое буфера Symfony для шаблона веток - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть контроллер, который запускает длинный сервис, который выводит разные сообщения в пределах 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();
    }

}

Есть идеи? Спасибо ...

1 Ответ

0 голосов
/ 09 сентября 2018

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

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

...