2009-07-28 9 views
10

En mi forma tengo este código;¿Cómo elimino el decorador de etiquetas de un botón de envío

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

Sin embargo, el formulario aún se representa con el elemento de etiqueta entre las etiquetas.

¿Qué estoy haciendo mal?

Respuesta

3

Creo que el argumento removeDecorator distingue entre mayúsculas y minúsculas. Es decir, debe ser "Label" # tenga en cuenta la mayúscula 'L'.

+0

Intenté que no hiciera ninguna diferencia. Encontré esto en otra respuesta, pero no parece correcto hacerlo de esta manera ya que no es la forma en que la documentación describe cómo hacerlo. $ element-> removeDecorator ('DtDdWrapper') -> addDecorator ('HtmlTag', array ('tag' => 'dd')); Sin embargo, incluso eliminar el elemento

del html no resolvió mi problema general de no poder colocar el botón de envío a la izquierda. –

+0

Por lo tanto, ha cambiado esto: $ element-> removeDecorator ('label'); a esto: $ element-> removeDecorator ('Label'); y todavía no funcionó? Si ese es el caso, tal vez intente var_dump (getDecorators()) y vayamos desde allí. – g33kz0r

11

La función addElement devuelve una referencia al formulario actual no al último elemento agregado.

Usted podría intentar esto:

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

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

También Zend_Db_Element no tiene función addElement Zend_Db_Form tiene – Erik

1

Para superar esta molestia estoy definiendo manualmente los decoradores de mi elemento ...

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

Por supuesto, puede definir sus propias etiquetas. En este ejemplo, solo inicializo el decorador "ViewHelper". Si quiero inicializar el decorador "Etiqueta" Haría:

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

Espero que esto tenga sentido ...: o)

18

Esto funcionó para mí:

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

lo hice print_r($element); para averiguar qué decoradores existen para $element.

Cuestiones relacionadas