Symfony缓冲内容到树枝模板

时间:2018-09-08 17:20:22

标签: symfony twig buffer

我有一个运行长期服务的控制器,该服务在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 :(得分:0)

在索引操作中,您可以调用ob_end_flush() ob_get_flush()而不是调用$messages =

这还将停止输出缓冲,但是它将以字符串形式返回缓冲区的内容,然后您可以在树枝模板中使用它。