我正在使用Zend Framework,并且很好奇人们如何处理表单提交。现在,我正在使用这样的东西:
public function editAction()
{
$form = my_form();
$this->view->form = $form;
if ($this->getRequest()->isPost() {
$params = $this->getRequest()->getPost();
if ($form->isValid($params) {
// process form
}
}
}
让页面尝试在刷新时重新发布表单只是令人讨厌,并且令用户感到沮丧。我希望将所有表单处理移出“编辑”操作,并进入“更新”操作(更多RESTful方法)。但是,我没有想出一个好的方法来利用Zend_Form的内置验证装饰器而不使用上述方法。使用上述方法,如果我在调用$form->populate()
后$form->isValid()
表单,则会自动显示错误消息。
是否有任何好方法可以跨表单(使用装饰器)在表单上保留验证消息。如果没有,是否有人有一个可靠的解决方案在会话中存储表单验证?
感谢。
答案 0 :(得分:2)
将表格处理后转发给另一个控制器/动作。这将向客户端发送重定向标题,他将能够刷新页面而不会出现烦人的警报窗口。
if ($form->isValid($params) {
// process form
....
....
$this->_helper->Redirector->goto('another-action');
}
答案 1 :(得分:0)
我的方式是这样的:
/ index action - >让我们说博客帖子 - >更新操作 - >更新在索引中选择的博客帖子 在更新操作(伪代码):
if(is_post){
if(data_valid){
update_data()
redirect_to_index()
} else {
show_messages()
}
}