使用Zend_Form(和验证)发布到不同的操作

时间:2009-10-07 13:06:25

标签: php zend-framework forms rest

我正在使用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()表单,则会自动显示错误消息。

是否有任何好方法可以跨表单(使用装饰器)在表单上保留验证消息。如果没有,是否有人有一个可靠的解决方案在会话中存储表单验证?

感谢。

2 个答案:

答案 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()
  }
}