2012-03-29 24 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

相關問題