Zend Form对我来说有点棘手,即使我最近也在使用它...如何在我的Zend表单复选框中设置'值'?
我有这种形式,我试图为它动态地创建几个复选框。它工作正常,除了我似乎无法得到“值”属性改变。
在我的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>
一切似乎是工作很好,除了每个复选框上的值属性都呈现为'1'的值。我已经尝试将'setValue'行移动到几个不同的位置,以便在表单元素呈现之前设置该值,但我没有运气让这个工作。这对我来说是值得的,因为我需要在我的应用程序的许多方面进行相同类型的操作。我会做这个有点不同,但我重新考虑另一个应用程序,并试图保持一些东西不变(例如数据库)。
任何帮助大大appriciated 感谢
完全做到了!谢谢......我在'foreach'循环中将'setValue'改为'setCheckedValue'。这也将解决其他部分中的相同问题,我知道我可以使它的行为与旧应用程序完全相同,当然还有改进。他们有一定的局限性,但它是一个医疗应用程序(如果你不能说:)),那些东西可能有点搞笑。再次感谢... – rhaag71 2012-03-29 08:58:38