Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 标题中的渲染细枝模板(位置)_Symfony_Http Headers_Twig - Fatal编程技术网

Symfony 标题中的渲染细枝模板(位置)

Symfony 标题中的渲染细枝模板(位置),symfony,http-headers,twig,Symfony,Http Headers,Twig,更新:我正在Symfony框架中使用流程功能创建长时间运行的后台任务。作为其中的一部分: -用户将完成表单并单击提交按钮 -这将使用下面的脚本启动后台进程 $rootDir = $this->get('kernel')->getRootDir(); $adk_process = new Process('php ../bin/console app:adkaction ' . $numcampaigns . ', ' . $timezone . ',' . $depdate); $a

更新:我正在Symfony框架中使用流程功能创建长时间运行的后台任务。作为其中的一部分: -用户将完成表单并单击提交按钮 -这将使用下面的脚本启动后台进程

$rootDir = $this->get('kernel')->getRootDir();
$adk_process = new Process('php ../bin/console app:adkaction ' . $numcampaigns . ', ' . $timezone . ',' . $depdate);
$adk_process->setWorkingDirectory($rootDir);
$adk_process->setTimeout(null);
$adk_process->start();
为了让用户能够做其他事情,我们关闭当前会话,希望呈现特定的twig tempalate,并使用下面的代码将特定的变量传递给它

$ignore_user_abort(true);
$strURL = $rootDir;
header("Location: " . $strURL, false);
header("Connection: close", true);
header("Content-Encoding: none");
header("Content-Length: 0", true);
flush();
ob_flush();
session_write_close();
这很好,但是我似乎找不到如何以这种方式传递变量。我的小枝模板是这样的

{% if currprogress is defined %}
<div class="col-md-4 col-sm-4 col-xs-12">
    <div class="x_panel">
        <div class="x_title">
            <div class="progress">
                <div class="progress-bar progress-bar-striped active"
                    role="progressbar" aria-valuenow={{currprogress}}
                    aria-valuemin="0" aria-valuemax="100" style="width:{{currprogress}}%">
                    Campaign Generation - {{currprogress}}%
                </div>
            </div>
        </div>
    </div>
</div>
{% endif %}
{%如果定义了currogress%}
活动生成-{currprogress}}%
{%endif%}
所以,一旦currprogress变量值被传递给Twig,它就会发生轻微的变化。关于如何使用header+link的任何想法。

我就是为了这个目的而使用的

在控制器中,创建一个新作业:

use JMS\JobQueueBundle\Entity\Job;

public function adkAction(Request $request)
{
    $job = new Job('app:adkaction', [
        'numcampaigns' => $request->request->get('numcampaigns'),
        //...timezone, etc.
    ]);

    $em = $this->getDoctrine()->getManager();
    $em->persist($job);
    $em->flush();

    return Response('Ok, job scheduled!');
}
按照文档中的描述配置JMSJobQueueBundle,以便命令在持久化后运行

在作业中,将进度保存到数据库、内存、文件或任何您认为有用的内容:

class FooBarCommand extends ContainerAwareCommand
{
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $entityManager = $this->getContainer()->get('doctrine')->getManager();
        $someEntity = new SomeEntity($input->getArgument('numcampaigns'));

        $someEntity->setProgress(5);
        $entityManager->persist($someEntity);
        $entityManager->flush();

        //do something

        $someEntity->setProgress(5);
        $entityManager->persist($someEntity);
        $entityManager->flush();

        //do something else

        $someEntity->setProgress(100);
        $entityManager->persist($someEntity);
        $entityManager->flush();
    }
}

现在,您的作业将在数据库中保存进度,这样您就可以创建一个控制器操作来查找该作业并使用它修改进度栏。

您的问题不太清楚。如何使用标题?
$strURL
是否指向树枝模板?Hello@Alvin Bunk。谢谢你的调查。在我的问题中添加了更多细节-我们将非常感谢您的帮助。目前,我可以根据需要重定向用户,但我不知道如何将变量传递到该模板。如果要更新progressbar,需要使用ajax获取进度并使用JavaScript更新UI。对不起,我没有做任何Symfony流程应用程序,因此我无法提供太多指导。你已经在谷歌上搜索过帮助了吗?我知道这可能会有帮助。@DarkBee,这正是我想做的。所以这里激活进度条的最基本方法是通过ajax请求,对吗?有没有办法让我在某个地方读到更多关于这方面的资料?