web-dev-qa-db-ja.com

Zendフォームのフォーム要素を無効にする方法は?

無効になっている要素の1つを含むZendフォームを表示したい。ユーザーが表示できるように値を設定していますが、ユーザーが編集できないように無効にしたいと思います。これは、ユーザーが編集できないように見えるように、何らかのcss/javascriptを使用する場合もあります。これは私の要素です:

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

あなたは使用できるはずです:

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

私もできると思います:

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

これは正常に動作します...ヘルプを完了するためだけに:あなたがコントローラにいる場合は、次のことができます:

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

selRoleは選択フィールドの名前です

5
cwhisperer

最新のzf2.2.1では、これをコントローラーで実行できます。

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

または

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

このコードをアプリケーションに適用します

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

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

0
Houssem

file elementフォーム送信後の設定:

$element->setValueDisabled(true);
0
frgtv10

@デニス:

JavaScriptを無効にすれば、フォームを再び有効にできます。そのため、JavaScriptを信頼することはできません。ネイティブHTMLを使用すると無効化されますが、disabled属性を削除することで簡単に回避できます。

最良のオプションは、フォーム自体の代わりに必要な値を表示し、フォームやその要素を無効にすることです。

私はあなたの投稿にコメントを直接追加できればいいのですが、私は一部の担当者です。

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

利点:ボックスの元の色は保持されますが、ユーザーがボックスの値を変更することはできません。

他の回答のdisabledメソッドを使用すると、チェックボックスの色が「グレー表示」に変わります。ここで説明されている方法ではありません。

0
Dennis