Zend Framework Чекбокс проблема - PullRequest
5 голосов
/ 22 февраля 2011

Привет Проблема с Zend_Form_Element_Checkbox заключается в том, что при рендеринге создается скрытое поле ввода с тем же именем, что и у фактического флажка. Итак, давайте посмотрим код:

Вот как я создаю элемент внутри формы:

    $onlineCheckbox = $this->createElement('checkbox', 'online_checkbox', array(
      'label'=>'Online:',
      'uncheckedValue'=> '0',
      'checkedValue' => '1'
    ));

И это выходной HTML выглядит так:

<input type="hidden" name="online_checkbox" value="0" /><input type="checkbox" name="online_checkbox" id="online_checkbox" value="1" />

Теперь проблема в том, что в других браузерах Firefox я получаю необходимые результаты по почте (если не отмечен «0», если отмечен «1»), но в Firefox для обоих случаев я получаю «0», я знаю, что это из-за этого скрытого поля. Я гуглил и кажется, что с этим вопросом не разобрались. Поэтому мой вопрос заключается в том, как другие справляются с этим, или, может быть, есть решение, позволяющее сделать это в Firefox. Любая помощь будет оценена. Спасибо заранее.

РЕДАКТИРОВАТЬ: Спасибо @Marcin - я думаю, что проблема в моих декораторах. В Firebug я получаю грязный вывод, я думаю, что если я их правильно расположу, он будет работать, еще раз спасибо @Marcin за указание!

Ответы [ 2 ]

2 голосов
/ 25 февраля 2011

Возможно, у вас есть форма с поддержкой Dojo. Zend_Dojo_View_Helper_CheckBox отображает скрытый элемент и элемент формы. Вы можете указать простой старый флажок так:

$onlineCheckbox = new Zend_Form_Element_CheckBox('online_checkbox', array(
  'label'=>'Online:',
  'uncheckedValue'=> '0', //can be removed, this is the default functionality
  'checkedValue' => '1', //can be removed, this is the default functionality
));

Это пройдет мимо загрузчика плагинов Zend_Form :: createElement ().

Счастливого взлома!

1 голос
/ 23 февраля 2011

Вам необходимо использовать IdenticalValidator в качестве обходного пути для этой проблемы:

->addValidator('Identical', false, '1');
...