2009-07-28 9 views
10

Nella mia forma ho questo codice;Come rimuovere il decoratore di etichette da un pulsante di invio

// Add the submit button 
$element = $this->addElement('submit', 'submit', array(
    'ignore' => true, 
    'label' => 'Add new material' 
)); 
$element->removeDecorator('label'); 

Tuttavia, il modulo esegue ancora il rendering con l'elemento etichetta tra i tag.

Cosa sto sbagliando?

risposta

3

Penso che l'argomento removeDecorator sia sensibile al maiuscolo/minuscolo. Ad esempio, dovrebbe essere "Label" # notare il maiuscolo 'L'.

+0

Ho provato che non fa alcuna differenza. Ho trovato questo in un'altra risposta, ma non sembra giusto farlo in questo modo in quanto non è come la documentazione descrive come farlo. $ element-> removeDecorator ('DtDdWrapper') -> addDecorator ('HtmlTag', array ('tag' => 'dd')); Tuttavia, anche la rimozione dell'elemento

dall'html non ha risolto il mio problema generale di non essere in grado di posizionare il pulsante di invio a sinistra. –

+0

Quindi, hai cambiato: $ element-> removeDecorator ('label'); a questo: $ element-> removeDecorator ('Label'); e ancora non ha funzionato? In questo caso, prova Var_Dump (getDecorators()) e andiamo da lì. – g33kz0r

11

La funzione addElement restituisce un riferimento al modulo corrente non all'ultimo elemento aggiunto.

Si potrebbe provare questo:

$form = new Zend_Form(); 
$form->addElement('submit', 'submit', array(
    'ignore' => true, 
    'label'  => 'Add new material' 
)); 

$element = $form->getElement('submit'); 
$element->removeDecorator('label'); 
+0

Anche Zend_Db_Element non ha alcuna funzione addElement Zend_Db_Form ha – Erik

1

Per superare questo fastidio sto definire manualmente i decoratori per il mio elemento ...

$details->addElement('text', 'in_year', array(
    'decorators'=>array(
    'ViewHelper', 
    array('HtmlTag', array('tag' => 'span')), 
    ) 
)); 

Naturalmente, è possibile definire i propri tag. In questo esempio ho solo inizializzato il decoratore "ViewHelper". Se voglio inizializzare il decoratore "Etichetta" Farei:

$details->addElement('text', 'in_year', array(
    'decorators'=>array(
    'ViewHelper', 
    'Label', 
    array('HtmlTag', array('tag' => 'span')), 
    ), 
    'attribs' => array('class' => 'required validate-digits') 
)); 

Spero che questo ha un senso ...: o)

18

Questo ha funzionato per me:

$this->addElements(array( 
    new Zend_Form_Element_Submit('submit', array( 
    'label' => 'Save' 
)) 
)); 
$element = $this->getElement('submit'); 
$element->removeDecorator('DtDdWrapper'); 

ho fatto print_r($element); per scoprire quali decoratori esistono per $element.

Problemi correlati