web-dev-qa-db-fra.com

Comment désactiver un élément de formulaire dans un formulaire Zend?

Je souhaite afficher un formulaire Zend avec l'un des éléments affichés comme étant désactivé. Je règle la valeur pour que l'utilisateur puisse la voir, mais je veux la désactiver pour que l'utilisateur ne puisse pas la modifier. Cela peut également impliquer une sorte de css/javascript pour s'assurer qu'il ressemble et qu'il n'est pas modifiable par l'utilisateur. Ceci est mon élément:

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

Vous devriez pouvoir utiliser:

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

Je pense que vous pouvez aussi bien:

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

Cela fonctionne bien ... Juste pour compléter l'aide: Si vous êtes dans un contrôleur, vous pouvez faire:

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

selRole est le nom d'un champ de sélection

5
cwhisperer

Dans la dernière version 2.2.1, vous pouvez le faire dans votre contrôleur.

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

ou 

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

Appliquez ce code dans votre application

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

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

0
Houssem

Seulement cela fonctionnait pour moi, lorsque je utilisais un file element lors de la configuration après la soumission du formulaire:

$element->setValueDisabled(true);
0
frgtv10

@Dennis:

Désactiver Javascript suffit à réactiver le formulaire, vous ne pouvez donc pas vraiment vous fier à Javascript. L'utilisation de HTML natif le désactive mieux, mais est simplement contourné en supprimant l'attribut désactivé.

La meilleure option est d’afficher les valeurs souhaitées à la place du formulaire et de désactiver le formulaire et/ou ses éléments.

J'aimerais pouvoir ajouter le commentaire directement à votre message, mais je suis un représentant court.

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

Avantage: conserve la couleur d'origine de la boîte mais ne permet pas à l'utilisateur de modifier la valeur de la boîte.

Utiliser la méthode disabled d'autres réponses change la couleur de la case à cocher en "grisé". La méthode décrite ici ne fonctionne pas.

0
Dennis