5

Para los fines del diseño tengo la necesidad de poner una abertura <div> al comienzo de un elemento y una etiqueta de cierre </div> al final de otra. Al revisar los documentos de HtmlDecorator, parece que no puedo entender cómo hacerlo bien, o si este es el decorador adecuado para usar. Parece un desperdicio tener que crear mi propio decorador simplemente para lograr esto.Adjuntar o anteponer etiquetas HTML a Zend Elemento de formulario

Respuesta

16

En el elemento en el que desea añadir un <div>, añadir este decorador:

array(
    array('openDiv' =>'HtmlTag'), 
    array('tag' => 'div', 'openOnly' => true) 
) 

En el elemento en el que desea añadir un </div >, añadir este decorador:

array(
    array('closeDiv' =>'HtmlTag'), 
    array('tag' => 'div', 'closeOnly' => true) 
) 
+0

Esto es exactamente lo que estoy buscando en este caso particular, ¡gracias! – ashurexm

7

suena como usted podría utilizar un display group con un decorador de HtmlTag.

algo como:

$form = new Zend_Form(); 

$form->addElement('text', 'elt1', array(
    'label' => 'Element 1', 
)); 
$form->addElement('text', 'elt2', array(
    'label' => 'Element 2', 
)); 

$form->addDisplayGroup(array('elt1', 'elt2'), 'myDisplayGroup'); 
$group = $form->getDisplayGroup('myDisplayGroup'); 

$group->setDecorators(array(
    'FormElements', 
    array('HtmlTag', array('tag' => 'div', 'class' => 'myClass')) 
)); 

Esto produce HTML como sigue:

<form method="post" action="" enctype="application/x-www-form-urlencoded"> 
    <dl class="zend_form"> 
     <div class="myClass"> 
      <dt id="elt1-label"><label class="optional" for="elt1">Element 1</label></dt> 
      <dd id="elt1-element"><input type="text" value="" id="elt1" name="elt1"></dd> 
      <dt id="elt2-label"><label class="optional" for="elt2">Element 2</label></dt> 
      <dd id="elt2-element"><input type="text" value="" id="elt2" name="elt2"></dd> 
     </div> 
    </dl> 
</form> 

Por supuesto, atascos un > etiqueta < div dentro de todo lo que <dl>, <dt> y <dd> la locura produce marcas no válidas, pero supongo que estás especificando diferentes decoradores para tus elementos de forma e <div> envolver su deseo será finalmente válido.

También destaca por más manipulaciones de marcado General es el AnyMarkup Decorator.

+0

DavidW, gracias por el gran ejemplo. Me olvidé totalmente de usar grupos de visualización. – ashurexm

+0

Mi placer ;-) –

Cuestiones relacionadas