如何在 Zend Framework 2 中使用 2 个提交按钮?

How to use 2 Submit Buttons with Zend Framework 2?

我的 Zend 表单需要 2 个提交按钮。一个将保存表单数据,第二个将是 return 的编辑功能到表单的第一页。这就是我创建提交表单按钮的方式。

    $this->add(array(
            'name' => 'editaction',
                            'type'  => 'submit',
                            'options' => array(
                                        'label'=> 'editaction'),
            'attributes' => array(
                    'value' => 'Edit',
                    'id' => 'editbutton',
                    'class' => 'btn btn-success btn-lg',
                                            'formnovalidate' => 'formnovalidate'
            ),
    ));

    $this->add(array(
            'name' => 'submitaction',
                            'type'  => 'submit',
                            'options' => array(
                                        'label'=> 'submitaction'),
            'attributes' => array(
                                    'value' => 'Post your advert',
                                    'id' => 'submitbutton',
                                    'class' => 'btn btn-success btn-lg',
            ),
    )); 

当我单击按钮并检查 Firebug 中发送的内容时,我从两个提交按钮中获取了值。我在我的控制器中尝试了各种不同的方法来找出单击了哪个提交按钮,但它似乎不起作用。下面是我最后的简单测试。我得到的只是 "Edit"。我在这里做错了什么?

     // Form was send
$request = $this->getRequest();
    if ($request->isPost()) {
        $postData = $request->getPost();
        $form->setData($this->request->getPost());
        if ($request->getPost('editaction') == 'Edit')
        {
            echo 'Edit';
        }
        elseif($request->getPost('submitaction')=='Post your advert'){
             echo 'Submit';
        }
    } 

更新

经过越来越多的尝试,我实际上发现问题不是 Zend Framework 2 而是由开源 Javascript 库引起的。多么令人沮丧,在我认为 Javascript 可以正常工作之后,我现在遇到了表格其余部分的问题....

您可以为两个提交按钮指定相同的名称,而不是不同的名称。然后 post 值将等于单击按钮的值。

这是我在 GitHub 上的一个项目,除了我将它用于保存与应用(其中保存保存表单,returns 到 indexAction,但应用保留在编辑页面上保存后。)

两个文件:

  1. The View

这是我按钮的 html:

<div class="col-sm-5">
  <input type="submit" name="submit" id="submitbutton" class="form-control btn btn-success" value="Save">
</div>
<div class="col-sm-5">
  <input type="submit" name="submit" id="applybutton" class="form-control btn btn-warning" value="Apply">
</div>
  1. The Controller

有一个 saveAction()applyAction() 处理 按钮以不同的方式。 (两者都调用 editAction,但重定向不同)