如何设置';值';在我的Zend表单复选框中


How do I set the 'value' in my Zend form checkbox?

Zend Form对我来说有点棘手,尽管我最近一直在使用它。。。

我有这个表单,我正在尝试为它动态创建几个复选框。它运行得很好,只是我似乎无法更改"value"属性。

在我的Zend表单类中,我有以下片段。。。

// psychotic symptoms
        $this->addElement('checkbox', 'psychoticsymptom', array(
                'label' => 'psychoticsymptom',
                'name' => 'psychoticsymptom',
        ));

在我看来(phtml)我这样称呼它。。。

<div class="element">
    <?php // Psychotic Symptoms
    $Criteria = new Criteria();
    $Criteria->add( DictionaryPeer::CATEGORY, 'MAR: Psychotic Symptoms' );
    $Criteria->addAscendingOrderByColumn( 'Ordinal' );
    $this->PsychoticSymptomsList = DictionaryPeer::doSelect( $Criteria );
    foreach( $this->PsychoticSymptomsList as $Symptom ) {
        $form->psychoticsymptom->setValue($Symptom->getDictionaryId());
        $form->psychoticsymptom->setAttrib('name', $Symptom->getWord());
        echo $Symptom->getDictionaryId(); // prove my id is coming through... (it is)
        $form->psychoticsymptom->getDecorator('label')->setTag(null);
        echo $form->psychoticsymptom->renderViewHelper();
        $form->psychoticsymptom->setLabel($Symptom->getWord());
        echo $form->psychoticsymptom->renderLabel();
        echo '<br />';
                    }
        ?>
    </div>

除了每个复选框上的value属性呈现的值为"1"之外,一切似乎都很正常。我曾尝试将"setValue"行移动到几个不同的位置,以便在表单元素呈现之前设置值,但我没有成功。这对我来说是值得的,因为我需要在应用程序的许多领域进行相同类型的操作。我也会做一些不同的事情,但我正在重新考虑另一个应用程序,并试图保持一些东西不变(例如数据库)。

任何帮助都会被告知感谢

您可以尝试覆盖"checkedValue"answers"uncheckedValue"。检查这个参考

$this->addElement('checkbox', 'psychoticsymptom', array(
                'label' => 'psychoticsymptom',
                'name' => 'psychoticsymptom',
                'checkedValue' => 'checked Value',
                'uncheckedValue' => 'unchecked Value'
        ));

您似乎只有一个心理症状元素"checkbox",您也可以为每个$this->PsychoticSymptomsList添加(更改)值。

也许您最好使用多复选框元素。