我正在寻找重定向后重新填充表单的解决方案。
我正在使用Zend flash消息来切换操作错误,并使用重定向方法显示它。
$this->getHelper('FlashMessenger')->addMessage('Sauvegarde réalisée !');
$this->redirect('/control/action');
答案 0 :(得分:1)
在会话中设置POST数据,在重定向后检索它并从会话中取消设置。
E.g。
$userSession = new Zend_Session_Namespace('user_session');
$userSession->formPostData = $this->getRequest()->getPost();
$this->getHelper('FlashMessenger')->addMessage('Sauvegarde réalisée !');
$this->redirect('/control/action');
在重定向后的操作中,请使用以下代码:
$userSession = new Zend_Session_Namespace('user_session');
$formData = $userSession->formPostData;
$formObject = new yourZendForm();
$formObject->populate($formData);
unset($userSession->formPostData);
其他替代解决方案是,而不是重定向到另一个操作,使用_forward
在请求中发布数据。
E.g。
$this->getHelper('FlashMessenger')->addMessage('Sauvegarde réalisée !');
$formData = $userSession->formPostData = $this->getRequest()->getPost();
$this->_request->setPost(array('formData' => $formData));
$this->_forward('action', 'controller', 'module');
将控制转发给其他操作后,使用getPost
检索数据,如下所示:
if($this->getRequest()->isPost()) {
$previousFormData = $this->getRequest()->getPost();
$formObject = new yourZendForm();
$formObject->populate($previousFormData);
}