Zend Form对我来说有点棘手,就像我最近在使用它一样......
我有这个表单,我正在尝试动态创建它的几个复选框。它运作正常,除了我似乎无法改变“价值”属性。
在我的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'行移动到几个不同的位置,以便在表单元素呈现之前设置值,但我没有运气让它工作。值得为我付出任何努力,因为我需要在我的应用程序的许多方面进行相同类型的操作。我也会这样做有点不同,但我正在重新考虑另一个应用程序,并试图保持一些不变的东西(例如数据库)。
任何帮助都很受欢迎 感谢
答案 0 :(得分:9)
您可以尝试覆盖“checkedValue”和“uncheckedValue”。检查此reference
$this->addElement('checkbox', 'psychoticsymptom', array(
'label' => 'psychoticsymptom',
'name' => 'psychoticsymptom',
'checkedValue' => 'checked Value',
'uncheckedValue' => 'unchecked Value'
));
答案 1 :(得分:1)
你似乎只有一个psychoticsymptom元素“复选框”,您为每个$ this-&gt; PsychoticSymptomsList添加(更改)值。
也许你会更好地使用multiheckbox元素。