我想知道如何在 zend 框架 2 中更新视图。我想我可以这样做,只需再次调用构建视图的 Action 即可。但这似乎不起作用。
所以这就是故事,我展示了一个表格(仅供参考,这是一个计划),当人们点击“下个月”/“上个月”等链接时,我想在这个表格中插入一些元素。所以我想, “嘿,我可能会再次调用我的操作,并带有一个参数,这样做我什至会避免重建整个表,我只会从我的数据库中获取“下个月”/“上个月”信息”。但是代码的行为很奇怪,表格在第一次访问页面时会正确构建,但是当我尝试单击“下个月”/etc 链接时,视图不会自行更新。但同样,使用 JS 函数成功,我可以看到该操作被正确调用并返回应该显示的正确更新视图......但没有显示,它仍然是原始视图。
一小段代码可以帮助您理解:
创建视图的操作:
public function projectAction( )
{
$mod=$_POST['mod'] ;
if ( $mod == NULL )
{
//create and populate $tableRes
}
else // mod != NULL
{
echo "fooooooooooooo, I'm a test !!!" ;
//modify $tableRes using mod value
}
$viewModel = new ViewModel(array(
'projectTable' => $tableRes ,
)
) ;
$viewModel->setTerminal(true);
return $viewModel ;
}
风景:
<?php echo $this->headScript()->prependFile($this->basePath() . '/js/projet_b_JS/animation.js')
->prependFile($this->basepath() . '/js/projet_b_JS/projectListener.js')
?>
<table id="projectTable">
<caption> Tableau Projet </caption>
<?php
//print the projectTable/$tableRes table
?>
</table>
<a onClick='rigTable(-1)'> prev Month </a> <a onClick='rigTable(+1)'> next Month </a> <br />
<a onClick='rigTable(-12)'> prev Year </a> <a onClick='rigTable(12)' > next Year </a> <br />
AJAX 调用:
//inside animation.js
function rigTable ( $mod )
{
$.ajax({ type : 'POST',
url : './application/project/project',
data : { mod : $mod } ,
success : function ( testReturn )
{
alert(testReturn) ;
},
error : function ()
{
alert("error from rigTable JS function <br />") ;
}
}) ;
}
因此,当我单击时,会弹出一个警报并告诉我以下内容:
fooooooooooooo,我是一个测试! //其余的视图代码
我搜索了 refreshView() 方法,但没有找到。我当然是以错误的方式做这件事,跳出框框思考太多,但我看不到其他方法。任何帮助将不胜感激,非常感谢您阅读那篇长文。
PS:我还是zf2框架的新手,还不太习惯“MVC框架编程也没有”。因此,对不起,如果这是一个愚蠢的问题。