我想知道如何在zend框架2中更新视图。我想我可以这样做,只需再次调用构建视图的Action即可。但它似乎并不奏效。如何更新zf2视图
所以这里是故事,我展示了一个表格(FYI,这是一个计划),并且当人们点击像“下个月”/“prev month”等链接时,我想在此表格中插入一些元素。所以我想,“嘿,我可能会再次打电话给我的行动,有一个争论,这样我甚至会避免重建整个表格,我只会从我的数据库中获得”下个月“/”前月“信息” 。 但是,代码行为奇怪,表访问页面时第一次正确构建自身,但当我尝试点击“nextmonth”/ 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, I'm a test !!! //rest of the view code
我搜索了refreshView()方法,但没有发现任何。我当然这样做的方式不对,想太多了,但我没有看到其他方式去做。任何帮助将不胜感激,非常感谢您阅读那篇长篇文章。 PS:我还是新来的zf2框架,我并不真正习惯于“MVC框架程序既不”。因此,如果这是一个愚蠢的问题,非常抱歉。
我已经尝试过类似 如果($ MOD == NULL) $ tableRes = “teeeeeeeeeeeest”; else $ tableRes = NULL; 但该视图不刷新。 PS:我会尝试使用请求对象。 – aramir
见我的编辑,我挂你的教程,可以帮助;) – Tounu
OK,我会读这一点,回来后让你知道,如果我设法得到它的工作。感谢您的支持。 – aramir