Как отключить элемент формы в Zend Form? - PullRequest
25 голосов
/ 18 ноября 2009

Я хочу отобразить Zend Form с одним из элементов, показанных как отключенные. Я устанавливаю значение, чтобы пользователь мог его видеть, но я хочу отключить его, чтобы пользователь не мог его изменить. Это может также включать в себя некоторый вид CSS / Javascript, чтобы гарантировать, что он выглядит, и не редактируется пользователем. Это мой элемент:

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

Ответы [ 9 ]

48 голосов
/ 19 ноября 2009

Вы должны быть в состоянии использовать:

$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')
));
5 голосов
/ 26 июня 2012

Это отлично работает ... Просто чтобы завершить помощь: Если вы находитесь в контроллере, вы можете сделать:

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

selRole - имя поля выбора

1 голос
/ 08 августа 2013
$form->getElement("username")->setAttribs(array('disabled' => 'disabled', ));

или

$form->getElement("username")->setAttrib('disabled', 'disabled');
1 голос
/ 18 июня 2013

В последней версии zf2.2.1 вы можете сделать это в вашем контроллере;

$form->get('username')->setAttributes(array(
    'disabled' => 'disabled',  
)); 
0 голосов
/ 11 ноября 2016

@ Деннис:

Отключение Javascript достаточно для повторного включения формы, поэтому вы не можете действительно полагаться на Javascript. Использование нативного HTML лучше отключает его, но его также легко обойти, удалив атрибут disabled.

Лучший вариант - показывать нужные значения вместо самой формы и отключать форму и / или ее элементы.

Хотелось бы добавить комментарий прямо к вашему сообщению, но у меня немного репутации.

0 голосов
/ 23 февраля 2016
// disable checkbox using JS add-on
$checkbox->setAttribute('onclick', 'return false'); 

Преимущество: сохраняет первоначальный цвет коробки, но не позволяет пользователю изменять значение коробки.

При использовании метода disabled других ответов цвет флажка меняется на «серый». Способ, описанный здесь, отсутствует.

0 голосов
/ 29 мая 2015

Только у меня это работало, при использовании file element при настройке после отправки формы:

$element->setValueDisabled(true);
0 голосов
/ 26 апреля 2014

Примените этот код в вашем приложении

$formelement->setAttrib('readonly', 'true');
$formelement->setAttrib('style', 'pointer-events: none');
0 голосов
/ 12 декабря 2012

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

...