25

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

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

9 回答 9

50

您应该能够使用:

$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')
));
于 2009-11-18T21:05:13.430 回答
5

这很好......只是为了完成帮助:如果您在控制器中,您可以执行以下操作:

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

selRole 是选择字段的名称

于 2012-06-26T07:28:35.433 回答
1

在最新的 zf2.2.1 中,您可以在控制器中执行此操作;

$form->get('username')->setAttributes(array(
    'disabled' => 'disabled',  
)); 
于 2013-06-18T00:58:11.133 回答
1
$form->getElement("username")->setAttribs(array('disabled' => 'disabled', ));

或者

$form->getElement("username")->setAttrib('disabled', 'disabled');
于 2013-08-08T02:10:40.390 回答
0

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

于 2012-12-12T15:42:41.400 回答
0

将此代码应用到您的应用程序中

$formelement->setAttrib('readonly', 'true');
$formelement->setAttrib('style', 'pointer-events: none');
于 2014-04-26T14:21:28.610 回答
0

file element只有在提交表单后使用 when 设置时,这对我有用:

$element->setValueDisabled(true);
于 2015-05-29T12:07:19.160 回答
0
// disable checkbox using JS add-on
$checkbox->setAttribute('onclick', 'return false'); 

好处:保留盒子的原始颜色但不让用户改变盒子的值。

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

于 2016-02-23T20:45:55.567 回答
0

@丹尼斯:

禁用 Javascript 足以再次启用表单,因此您不能真正依赖 Javascript。使用原生 HTML 可以更好地禁用它,但也可以通过删除 disabled 属性来解决。

最好的选择是显示您想要的值而不是表单本身并禁用表单和/或其元素。

希望我可以将评论直接添加到您的帖子中,但我的代表很短。

于 2016-11-11T08:12:08.320 回答