簡體   English   中英

如何在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”和“ uncheckedValue”。 檢查此參考

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

您似乎只有一個psychoticsymptom元素“復選框”,您也為每個$ this-> PsychoticSymptomsList添加(更改)了該值。

也許最好改用multicheckbox元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM