2009-11-18 24 views
24

「無効」と表示されている要素の1つを使用してZend Formを表示したいとします。値を設定してユーザーに表示させることができますが、無効にしてユーザーが編集できないようにしたいと考えています。これはまた、それが見えるようにするためのCSS/JavaScriptのいくつかの並べ替えを伴い、ユーザーが編集することはできません。これは私の要素である:Zend Formでフォーム要素を無効にする方法は?

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

答えて

47

あなたが使用することができるはずです。

$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') 
)); 
+0

ありがとうございます。ちょうど私が必要なもの。 – Andrew

+4

このバグのために、チェックボックスで「無効」の代わりに「無効」を使用する必要があることに注意してください。http://framework.zend.com/issues/browse/ZF-9149 – Maxence

+0

これは同じで、これはうまくいきました必要だった。すばやく効果的。 –

5

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

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

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

+0

無効にする代わりに実際に無効にするか、これはエラーです。 –

0

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

1

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

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

または

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

のみ、これはフォームが送信された後に設定するときにfile elementを使用しているとき、私のために働いていたアプリケーションに

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

をこのコードを適用します。

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

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

disabledを使用すると、チェックボックスの色が「グレー表示」に変わります。ここに記述されているメソッドはそうではありません。

0

@Dennis:Javascriptを無効に

が再びフォームを有効にするのに十分ですので、あなたが本当にJavascriptを頼ることはできません。ネイティブHTMLを使用すると無効になりますが、無効属性を削除するだけで簡単に回避できます。

ベストオプションは、フォーム自体の代わりに必要な値を表示し、フォームやその要素を無効にします。

ウィッシュあなたの投稿に直接コメントを追加することができましたが、私はいくつかの短いコメントです。

関連する問題