2017-03-02 140 views
1

我创建了一个抽象表单类,它将一个submit元素添加到表单中。当我的其他表单类扩展这个表单类时,我不得不在类的底部调用parent::__construct(),以便最后添加提交元素。如何在特定位置添加zend表单元素?

如何将提交按钮设置为始终是表单中的最后一个元素,如果我先拨打parent::__construct(),事件会发生?

回答

2

函数add函数接受两个参数 - 数组或实例实例和flags的数组。其中一个标志选项是priority。数字越小,它出现的元素列表就越低。因此,将其设置为-1000(除非你有超过1000元以上)将设置提交按钮出现在表单的底部:

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

RichardParanby王的回答是好的,但细心的观点:

在视图中我们有很多的选项,以显示形式:

  • <?= $this->form($form)?>
  • <?= $form->get('{element}') ?>
  • 环比$form->getIterator()
  • 环比$form->getElements()

等等

我必须说,我用了很多这种结构在我所有的项目:

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

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

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

相关问题