php - Cómo agregar atributos a una etiqueta generada con Zend/Form en el marco Zend 2
forms zend-framework2 (4)
Estoy agregando formularios a mi página usando Zend / Form.
Estoy agregando elementos definiéndolos de la siguiente manera:
$this->add(array(
''name'' => ''value'',
''attributes'' => array(
''type'' => ''text'',
''id'' => ''value'',
''autocomplete'' => ''off'',
''placeholder'' => ''Cost'',
),
''options'' => array(
''label'' => ''Cost'',
),
));
Como puede ver, hay un nodo ''etiqueta'' => ''costo'', esto generó una etiqueta para ir con el elemento de entrada.
¿Cómo agrego clases, atributos a esta etiqueta?
Esto funciona bien en Zend Framework 2.3:
$this->add(array(
''name'' => ''userName'',
''attributes'' => array(
''type'' => ''text'',
''class'' => ''form-control'',
''placeholder'' =>''Username'',
),
''options'' => array(
''label'' => ''Username'',
''label_attributes'' => array(''class'' => ''control-label'')
),
));
Para el enfoque programático en ZF2 + intente esto:
$element->setOptions(array(
''label_attributes'' => array(
''style'' => ''color:gray;''
)
));
Inspirado por la respuesta de Damon.
Por favor, intente esto, no lo he probado ni lo he usado, pero según la fuente debería funcionar correctamente:
$this->add(array(
''name'' => ''value'',
''attributes'' => array(),
''options'' => array(
''label_attributes'' => array(
''class'' => ''mycss classes''
),
// more options
),
));
Si esto no funciona, por favor déjame un comentario. Si no funciona, no es posible usar este enfoque, ya que FormLabel
restringe bastante los validAttributes
:
protected $validTagAttributes = array(
''for'' => true,
''form'' => true,
);
$element->setOptions(array(''label_class'' => array(''class'' => ''control-label'')));
Produce código como este:
<label class="control-label">
<input type="radio" name="option1" id="option1" value="1">
Option 1
</label>
<label class="control-label">
<input type="radio" name="option2" id="option2" value="2">
Option 2
</label>
He intentado esto. Funciona en Zend Framework One.
Nota si usas
$ element-> setOptions (array (''label_attributes'' => array (''class'' => ''control-label'')));
Obtienes el efecto indeseable por alguna razón de
<label attributes="control-label">
<input type="radio" name="option1" id="option1" value="1">
Option 1
</label>