Как добавить элемент формы Zend в определенную позицию, после того как объект формы уже создан? - PullRequest
7 голосов
/ 22 февраля 2012

Я создал один класс user_form, который расширяет форму zend, он имеет 4 элемента username, password, hash для csrf и, наконец, кнопку отправки.

Создание объекта user_form отображает все эти четыре элемента.

После проверки входа в действие контроллера я проверяю попытки неудачи, и после некоторого исправления количества попыток неудачи я хочу добавить Zend Captch перед кнопкой подтверждения.

Я добавил элемент капчи, и он был добавлен после кнопки подтверждения.

Как добавить элемент zend в определенную позицию?Или как я могу добавить его перед кнопкой отправки?

Также дайте мне знать, что мои действия правильны?Жду твоего ответа.Спасибо ...

Ответы [ 2 ]

14 голосов
/ 22 февраля 2012

Дайте вашим элементам порядковые номера с самого начала. Добавьте номер заказа к элементу капчи при его добавлении.

$element->setOrder(10);

или

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

См. Также руководство Zend_Form .

6 голосов
/ 22 февраля 2012

Вы можете использовать setOrder(), как сказал Маркус, или когда вы визуализируете свою форму в вашем скрипте, вы можете визуализировать каждое поле отдельно:

// .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>
...