如何在特定位置添加 zend 表单元素?
How to add zend form element at specific position?
我创建了一个抽象表单 class,它向表单添加了一个 submit
元素。当我的其他表单 classes 扩展此表单 class 我必须在 class 底部调用 parent::__construct()
以便最后添加提交元素。
如果我先调用 parent::__construct()
,如何将提交按钮设置为始终是表单、事件中的最后一个元素?
形式 add
函数接受两个参数 - 数组或元素实例,以及 flags
的数组。标志选项之一是 priority
。数字越小,它在元素列表中的位置就越低。因此,将其设置为 -1000(除非您有超过 1000 个元素)会将提交按钮设置为出现在表单底部:
$this->add([
'name' => 'submit',
'type' => 'submit',
'attributes' => [
'value' => 'Submit',
'class' => 'btn btn-sm',
],
'options' => []
],
[ 'priority' => -1000 ]);
RichardParanby-King 的回答很好,但请注意观点:
在视图中我们有很多选项来显示表单:
<?= $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()
)来取回这个优先级。
我创建了一个抽象表单 class,它向表单添加了一个 submit
元素。当我的其他表单 classes 扩展此表单 class 我必须在 class 底部调用 parent::__construct()
以便最后添加提交元素。
如果我先调用 parent::__construct()
,如何将提交按钮设置为始终是表单、事件中的最后一个元素?
形式 add
函数接受两个参数 - 数组或元素实例,以及 flags
的数组。标志选项之一是 priority
。数字越小,它在元素列表中的位置就越低。因此,将其设置为 -1000(除非您有超过 1000 个元素)会将提交按钮设置为出现在表单底部:
$this->add([
'name' => 'submit',
'type' => 'submit',
'attributes' => [
'value' => 'Submit',
'class' => 'btn btn-sm',
],
'options' => []
],
[ 'priority' => -1000 ]);
RichardParanby-King 的回答很好,但请注意观点:
在视图中我们有很多选项来显示表单:
<?= $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()
)来取回这个优先级。