我想知道如何在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