我創建了一個抽象表單類,它將一個submit
元素添加到表單中。當我的其他表單類擴展這個表單類時,我不得不在類的底部調用parent::__construct()
,以便最後添加提交元素。如何在特定位置添加zend表單元素?
如何將提交按鈕設置爲始終是表單中的最後一個元素,如果我先撥打parent::__construct()
,事件會發生?
我創建了一個抽象表單類,它將一個submit
元素添加到表單中。當我的其他表單類擴展這個表單類時,我不得不在類的底部調用parent::__construct()
,以便最後添加提交元素。如何在特定位置添加zend表單元素?
如何將提交按鈕設置爲始終是表單中的最後一個元素,如果我先撥打parent::__construct()
,事件會發生?
函數add
函數接受兩個參數 - 數組或實例實例和flags
的數組。其中一個標誌選項是priority
。數字越小,它出現的元素列表就越低。因此,將其設置爲-1000(除非你有超過1000元以上)將設置提交按鈕出現在表單的底部:
$this->add([
'name' => 'submit',
'type' => 'submit',
'attributes' => [
'value' => 'Submit',
'class' => 'btn btn-sm',
],
'options' => []
],
[ 'priority' => -1000 ]);
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()
)來取回這個優先級。