2009-11-18 80 views
24

我想显示一个显示为禁用的元素之一的Zend表单。我正在设置该值,以便用户可以看到它,但我想禁用它,以便用户无法编辑它。这可能还涉及某种css/javascript,以确保它看起来像,并且不能被用户编辑。这是我的元素:如何禁用Zend表单中的表单元素?

$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 2009-11-18 21:18:43

+4

请注意,您应该使用'禁用'而不是'禁用'的CheckBox,因为这个错误:http://framework.zend.com/issues/browse/ZF-9149 – Maxence 2010-12-13 10:00:33

+0

同样在这里,这工作,正是我需要。快速有效。 – 2011-08-20 21:56:22

5

这工作得很好...... 只是为了完成帮助: 如果你在一个控制器,你可以这样做:

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

selRole是选择字段的名称

+0

禁用真正的工作而不是禁用或者这是一个错误。 – 2013-10-23 16:33:58

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

使用这个代码到你的应用程序

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

,只有这是为我工作使用file element当表格后设置提交时:

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

好处:保留箱子的原始颜色,但不会让用户更改箱子的值。

使用disabled其他答案的方法将复选框的颜色更改为“变灰”。这里描述的方法,不。

0

@Dennis:

禁用JavaScript是足以再次启用的形式,所以你不能真正依赖于JavaScript。使用本地HTML可以更好地禁用它,但也可以通过删除禁用的属性来解决问题。

最佳选择是显示您想要的值而不是表单本身,并禁用窗体和/或它的元素。

希望我可以直接添加评论到您的文章,但我是一些代表短。