wake-up-neo.com

Wie deaktiviere ich ein Formularelement in einem Zend Form?

Ich möchte ein Zend-Formular mit einem der als deaktiviert angezeigten Elemente anzeigen. Ich stelle den Wert so ein, dass der Benutzer ihn sehen kann, aber ich möchte ihn deaktivieren, damit er ihn nicht bearbeiten kann. Dies kann auch eine Art CSS/Javascript beinhalten, um sicherzustellen, dass es aussieht und vom Benutzer nicht bearbeitet werden kann. Das ist mein Element:

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

Sie sollten in der Lage sein zu verwenden:

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

Ich denke, du kannst auch:

$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

Das funktioniert gut ... Um die Hilfe zu vervollständigen: Wenn Sie sich in einem Controller befinden, können Sie Folgendes tun:

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

selRole ist der Name eines Auswahlfeldes

5
cwhisperer

In der neuesten Version von zf2.2.1 können Sie dies in Ihrem Controller tun.

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

oder 

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

Wenden Sie diesen Code in Ihre Anwendung an

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

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

0
Houssem

Nur dies funktionierte für mich, wenn ein file element verwendet wurde, nachdem das Formular gesendet wurde:

$element->setValueDisabled(true);
0
frgtv10

@Dennis:

Das Deaktivieren von Javascript reicht aus, um das Formular erneut zu aktivieren, sodass Sie sich nicht wirklich auf Javascript verlassen können. Durch die Verwendung von nativem HTML wird es besser deaktiviert, es wird jedoch auch einfach umgangen, indem das deaktivierte Attribut entfernt wird.

Die beste Option besteht darin, die gewünschten Werte anstelle des Formulars selbst anzuzeigen und das Formular und/oder seine Elemente zu deaktivieren.

Ich wünschte, ich könnte den Kommentar direkt zu Ihrem Post hinzufügen, aber ich bin ein kleiner Repräsentant.

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

Vorteil: Behält die ursprüngliche Farbe der Box bei, lässt den Benutzer jedoch nicht den Wert der Box ändern.

Wenn Sie die disabled-Methode für andere Antworten verwenden, ändert sich die Farbe des Kontrollkästchens in "ausgegraut". Die hier beschriebene Methode funktioniert nicht.

0
Dennis