2012-02-22 13 views
7

Stworzyłem jedną klasę user_form, która rozszerza formularz Zend, ma 4 elementy nazwę użytkownika, hasło, hash dla csrf i na końcu przycisk Wyślij.Jak dodać element formularza Zend w określonej pozycji, już po utworzeniu obiektu formularza?

Utworzenie obiektu user_form renderuje wszystkie cztery elementy.

Po sprawdzeniu poprawności logowania w działaniu kontrolera i sprawdza próby niepowodzenia, a po pewnej ustalonej liczbie prób nieudanych chcę dodać zend captch przed przyciskiem przesyłania.

Dodałem element captcha i został on dołączony po przycisku przesyłania.

Jak mogę dodać element Zend w określonej pozycji? Lub Jak mogę go dodać przed przyciskiem przesyłania?

Daj mi również znać, że sposób, w jaki postępuję, jest prawidłowy? Oczekiwanie na odpowiedź. Dziękujemy ...

Odpowiedz

14

Podaj numery zamówień elementów od samego początku. Dodaj numer zamówienia do elementu captcha, kiedy go dodasz.

$element->setOrder(10); 

lub

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

Zobacz także Zend_Form manual.

+0

nie był tego świadomy. Usunięto moją odpowiedź. – Layke

+0

Dziękujemy @ markus-tharkun –

+0

link jest martwy :(ale używam ZF2 teraz – Dennis

6

Można użyć setOrder() jak Markus powiedział, czy podczas renderowania formularza w ViewScript można uczynić każdego pola oddzielnie:

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

Dziękuję @Liyali –