Zend framework2 如何在特定位置添加zend表单元素?

Zend framework2 如何在特定位置添加zend表单元素?,zend-framework2,zend-form-element,zend-form2,Zend Framework2,Zend Form Element,Zend Form2,我创建了一个抽象表单类,它向表单中添加了submit元素。当我的其他表单类扩展这个表单类时,我必须调用类底部的parent::\u construct(),以便最后添加submit元素 如果我先调用父对象::\uu construct(),如何将提交按钮设置为表单事件中的最后一个元素?表单添加函数接受两个参数-数组或元素实例,以及标志数组。标志选项之一是优先级。数字越小,它在元素列表中显示的越低。因此,将其设置为-1000(除非您有超过1000个元素)将设置提交按钮以显示在表单底部: $this

我创建了一个抽象表单类,它向表单中添加了
submit
元素。当我的其他表单类扩展这个表单类时,我必须调用类底部的
parent::\u construct()
,以便最后添加submit元素


如果我先调用
父对象::\uu construct()
,如何将提交按钮设置为表单事件中的最后一个元素?

表单
添加
函数接受两个参数-数组或元素实例,以及
标志数组。标志选项之一是
优先级
。数字越小,它在元素列表中显示的越低。因此,将其设置为-1000(除非您有超过1000个元素)将设置提交按钮以显示在表单底部:

$this->add([
    'name' => 'submit',
    'type' => 'submit',
    'attributes' => [
        'value' => 'Submit',
        'class' => 'btn btn-sm',
    ],
    'options' => []
],
[ 'priority' => -1000 ]);

理查德比·金的回答很好,但对观点很谨慎:

在视图中,我们有很多选项来显示表单:

  • 循环
    $form->getIterator()
  • 循环
    $form->getElements()
等等

我必须说,我在我的所有项目中都大量使用了这种结构:

<?php foreach ($form->get('fieldset')->getElements()  as $elementName => $element): ?>
     <?= $this->partial('partial/formElement', ['element' => $element])?>
<?php endforeach ?>

问题是:getElements不使用优先级,所以它只是按照元素实例化的时间顺序给出元素

在视图中,我们必须使用迭代方法(
$form->getIterator()
)来获取此优先级