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

时间:2015-09-07 11:51:27

标签: zend-framework2

我的Zend表格上需要2个提交按钮。一个将保存表单数据,第二个将是一个编辑函数返回到表单的第一页。这就是我创建“提交表单”按钮的方式。

    $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中发送的内容时,我从两个提交按钮中获取值。我已经在我的控制器中尝试了各种不同的方法来找出单击了哪个提交按钮,但它似乎不起作用。以下是我上次的简单测试。我得到的只是"编辑"。我在这做错了什么?

     // 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正常工作之后,我现在已经解决了其余形式的问题....

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

两个文件:

  1. The View
  2. 这是我按钮的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
    2. 有一个saveAction()applyAction()来处理 按钮以不同的方式。 (两者都调用editAction,但它们的重定向不同)