不知何故,當我在以下設置中使用gotoSimple
時,我的數據將在secondAction()
中保存兩次$object->save()
。gotoSimple()在重定向之前似乎重新加載到當前操作
public function firstAction(){
// get data
// process postdata, if any
if($form->isValid($postdata)) {
$this->_helper->getHelper('Redirector')->gotoSimple('second');
}
}
public function secondAction(){
// get data
// process postdata, if any
if($form->isValid($postdata)) {
if($object->save($postdata)) {
// set flashmessage
$this->_helper->getHelper('Redirector')->gotoSimple('index');
}
}
}
調試的時間我都來,不知怎的,在secondAction()
的gotoSimple()命令觸發secondAction()
它重定向到indexAction()
之前結束之後。我確信indexAction()
不可能重定向到secondAction()
。
更有趣的是:這隻發生在IE7和IE8中。任何人都可以以任何可能的方向指出這個奇怪的行爲可能來自哪裏以及我如何解決這個問題?
UPDATE 通過gotoSimple()
命令之前正確使用的代碼secondAction()
以下行,我可以肯定的是,不知何故,當我按下提交按鈕的secondAction()
調用兩次100%:
if(isset($_SESSION['xyz-zyx'])) {
$this->_helper->getHelper('flashMessenger')->addMessage('I\'ve already been here!');
unset($_SESSION['xyz-zyx']);
}
$_SESSION['xyz-zyx'] = true;
有沒有想法?
剛剛檢查,但設置重定向器的代碼不會改變任何內容。 –
您是否使用執行重定向的重寫規則?重定向後,$ _POST數據不應該可用了... –
是的,我正在使用重寫規則,但我不依賴$ _POST這裏,當我離開firstAction時,我將數據存儲在會話對象中),它在secondAction()中可用。你可以看到這個設置是一個非常簡單的嚮導。事情是,我可以在保存後取消設置會話對象,但是第二次重定向激活控制器代碼時會觸發錯誤。一個可能的解決方法是檢查$ _POST params,但是之後仍然會有第二次激活代碼...數據不會被保存兩次,也不會出現錯誤...但仍然存在。 –