2012-02-22 6 views
7

Ho creato una classe user_form che estende il modulo zend, ha 4 elementi nome utente, password, hash per csrf e all'ultimo pulsante di invio.Come aggiungere un elemento forma zend in una posizione specifica, dopo che una volta l'oggetto modulo è già stato creato?

Creazione oggetto di user_form rende tutti questi quattro elementi.

Dopo la convalida dell'accesso nell'azione del controller, vengono verificati i tentativi di errore e, dopo alcuni tentativi di errore, desidero aggiungere zend captch prima di inviare il pulsante.

Ho aggiunto l'elemento captcha ed è stato aggiunto dopo il pulsante di invio.

Come posso aggiungere l'elemento zend in una posizione specifica? O come posso aggiungerlo prima del pulsante Invia?

Fammi sapere anche che il modo in cui sto facendo è corretto? In attesa di risposta. Grazie ...

risposta

14

Dai il tuo numero di ordine agli elementi dall'inizio. Aggiungi un numero di ordine all'elemento captcha, quando lo aggiungi.

$element->setOrder(10); 

o

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

Vedere anche il Zend_Form manual.

+0

non era a conoscenza di questo. Rimosso la mia risposta. – Layke

+0

Grazie @ markus-tharkun –

+0

link is dead :(ma sto usando ZF2 ora – Dennis

6

È possibile utilizzare setOrder() come ha dichiarato Markus, o quando si esegue il rendering il modulo nella ViewScript, si può rendere ciascun campo separatamente:

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

Grazie @Liyali –

Problemi correlati