2012-03-29 94 views
3

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 感谢

回答

9

您可以尝试覆盖“checkedValue”和“uncheckedValue”。检查此reference

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

完全做到了!谢谢......我在'foreach'循环中将'setValue'改为'setCheckedValue'。这也将解决其他部分中的相同问题,我知道我可以使它的行为与旧应用程序完全相同,当然还有改进。他们有一定的局限性,但它是一个医疗应用程序(如果你不能说:)),那些东西可能有点搞笑。再次感谢... – rhaag71 2012-03-29 08:58:38

1

你似乎只有一个psychoticsymptom元素“复选框”,你的增加(改变)值也为每个$这个 - > PsychoticSymptomsList。

也许你会更好地使用multicheckbox元素。

+0

好主意,我将不得不检查是否允许窗体有多个检查以及。谢谢! – rhaag71 2012-03-29 08:18:31

+0

我可能会使用复选框,我的一些表单在范围上并不是非常灵活,但我必须与客户端进行核对......他们可能不希望能够检查多个复选框。不知道单选按钮设置是否可行?必须看看这个... – rhaag71 2012-03-29 08:24:25