2009-11-18 23 views
24

Quiero mostrar un Formulario Zend con uno de los elementos que se muestran como deshabilitados. Estoy configurando el valor para que el usuario pueda verlo, pero quiero desactivarlo para que el usuario no pueda editarlo. Esto también puede implicar algún tipo de css/javascript para garantizar que se vea y el usuario no pueda editarlo. Esta es mi elemento:Cómo deshabilitar un elemento de formulario en un formulario Zend?

$this->addElement('text', 'username', array(
     'label'  => 'Username:', 
     'required' => true, 
     'filters' => array('StringTrim'), 
     'validators' => array(
      array('StringLength', false, array(2, 50)) 
     ) 
    )); 

Respuesta

47

Usted debe ser capaz de usar:

$this->username->setAttrib('disabled', 'disabled'); 

creo que se puede, así:

$this->addElement('text', 'username', array(
    'label'  => 'Username:', 
    'required' => true, 
    'filters' => array('StringTrim'), 
    'validators' => array(
     array('StringLength', false, array(2, 50)) 
    ), 
    'attribs' => array('disabled' => 'disabled') 
)); 
+0

genial gracias. justo lo que necesitaba. – Andrew

+4

en cuenta que debe utilizar 'desactivar' en lugar de 'discapacitados' en un CheckBox, a causa de este error: http://framework.zend.com/issues/browse/ZF-9149 – Maxence

+0

mismo digo, esto funcionaba y era justo lo Lo necesitaba. Rápido y efectivo. –

5

Esto funciona bien ... sólo para completar la ayuda: Si se encuentra en un controlador que puede hacer:

$form->selRole->setAttribs(array('disable' => 'disable')); 

selRole es el nombre de un campo de selección

+0

¿Realmente funciona la desactivación en lugar de deshabilitada o es un error. –

0

$ var-> setAttribs (array ('disabled' => 'disabled'));

1

En última zf2.2.1 se puede hacer esto en su controlador;

$form->get('username')->setAttributes(array(
    'disabled' => 'disabled', 
)); 
1
$form->getElement("username")->setAttribs(array('disabled' => 'disabled',)); 

o

$form->getElement("username")->setAttrib('disabled', 'disabled'); 
0

Aplicar este código en su aplicación

$formelement->setAttrib('readonly', 'true'); 
$formelement->setAttrib('style', 'pointer-events: none'); 
0

Sólo esta estaba trabajando para mí, cuando se utiliza un file element al configurar después de formulario se ha enviado:

$element->setValueDisabled(true); 
0
// disable checkbox using JS add-on 
$checkbox->setAttribute('onclick', 'return false'); 

Beneficio: conserva el color original de la caja, pero no permite que el usuario cambie el valor de la caja.

Usando disabled método de otras respuestas cambia el color de la casilla de verificación para "grises". El método descrito aquí, no lo hace.

0

@Dennis:

deshabilitar JavaScript es suficiente para habilitar de nuevo la forma, por lo que no puede realmente confiar en Javascript. El uso de HTML nativo lo desactiva mejor, pero también se soluciona simplemente eliminando el atributo deshabilitado.

mejor opción está mostrando los valores que desea en lugar de la forma misma y deshabilitar la forma y/o sus elementos.

Me gustaría poder añadir el comentario directamente a su correo, pero yo soy un representante corto.

Cuestiones relacionadas