一旦表单对象已经创建,如何在特定位置添加zend表单元素?

时间:2012-02-22 14:25:56

标签: php zend-framework zend-form zend-form-element

我创建了一个扩展zend表单的user_form类,它有4个元素用户名,密码,csrf的哈希值和最后一个提交按钮。

创建user_form的对象会渲染所有这四个元素。

在控制器操作中验证登录后,我检查失败尝试,并在一些修复失败尝试次数后,我想在提交按钮之前添加zend captch。

我添加了验证码元素,并在提交按钮后附加了它。

如何在特定位置添加zend元素?或者如何在提交按钮之前添加它?

还让我知道我的方式是正确的吗? 等待你的回复。 谢谢......

2 个答案:

答案 0 :(得分:14)

从一开始就为您的元素提供订单号。添加订单号时,请在captcha元素中添加订单号。

$element->setOrder(10);

$form->addElement('text', 'username', array('order' => 10));

另请参阅Zend_Form manual

答案 1 :(得分:6)

您可以使用setOrder()作为markus说,或者当您在视图中渲染表单时,可以单独渲染每个字段:

// .phtml
<form id="form" action="<?= $this->escape($this->form->getAction()); ?>" method="<?= $this->escape($this->form->getMethod()); ?>">
<table>
  <?= $this->form->username ?>
  <?= $this->form->password ?>
  <?= $this->form->hash ?>
  <?= $this->form->captcha ?>
  <?= $this->form->submit ?>
</table>
</form>