Zend Framework 3:如何使用和(推送)更新进度条?

Zend Framework 3: How to use and (push-)UPDATE progressbar?

目前我在 MVC-Zend-Framework 3 应用程序中使用进度条时遇到问题。 我严格按照 Zend-documentation.

中给出的说明进行操作

但我的问题是,我看到一个空的进度条,它没有更新,而我的长-运行-php-脚本正在运行(没有文件上传,而是计算大约需要几分钟的工作)。看来,进度条的更新函数没有被调用....

一些片段:

a) index.phtml 文件 (备注:与文档相比,我更改了 iframe 的位置和大小以检查我的 long-运行-php-script 的调试输出)

$this->headTitle('Test-Page');

$this->h1('Test-Page');
?>
<style>
#long-running-process {
    position: absolute;
    left: 100px;
    top: 100px;

    width: 500px;
    height: 500px;
}

#zend-progressbar-container {
    width: 100px;
    height: 30px;

    border: 1px solid #000000;
    background-color: #ffffff;
}

#zend-progressbar-done {
    width: 0px;
    height: 30px;

    background-color: #000000;
}
</style>

<script type="text/javascript">
 function Zend\ProgressBar\Update(data)
 {
     document.getElementById('zend-progressbar-done').style.width = data.percent + '%';
 }
</script>

<div>
    This page demomstrates the use of the Zend Progressbar:
</div>

<div id="zend-progressbar-container">
    <div id="zend-progressbar-done"></div>
</div>

<iframe src="long-running-process.php" id="long-running-process"></iframe>

b) 长-运行-php-脚本的一部分:

$this->adapter = new Adapter\JsPush();
$this->progressBar = new ProgressBar($this->adapter,0,100);
//[...]
// in a long running while-loop is this code:
$this->progressBar->update(round($progress));

//end in the end:
$this->progressBar->finish();

如前所述,进度条未更改但保持为零值。不幸的是,我无法在互联网上找到任何有效的例子。

此外,我不仅对 "push" 值感兴趣,而且可能对进度条的一些状态消息感兴趣(如文档中提到的那样),但相应的语法对我来说并不清楚。

提前感谢您的帮助!

好的,暂时我自己回答问题:-)

JsPush-adapter 的 description 指出,更新方法的默认值为

Zend\ProgressBar\Update

如我的问题所示,脚本中的方法正是这个名称。当我将方法重命名为

function ZendProgressBarUpdate(data)

并在适配器初始化后添加以下行:

$this->adapter->setUpdateMethodName("ZendProgressBarUpdate");

一切如预期。