Zend framework Zend#u Form can';t在循环中创建元素

Zend framework Zend#u Form can';t在循环中创建元素,zend-framework,zend-form,Zend Framework,Zend Form,就像在主题中一样,当元素在循环中创建时,我尝试创建一个表单: foreach($aQuestionList as $aQuestionValue){ $aAnswerList = $oAnswerList->getListByQuestionId($aQuestionValue['newsletter_question_id']); $oNote = new SilverCms_Core_Form_Element_Note('note',array('v

就像在主题中一样,当元素在循环中创建时,我尝试创建一个表单:

foreach($aQuestionList as $aQuestionValue){

        $aAnswerList = $oAnswerList->getListByQuestionId($aQuestionValue['newsletter_question_id']);

        $oNote = new SilverCms_Core_Form_Element_Note('note',array('value'=>'<p>'.$aQuestionValue['newsletter_question_name'].'</p>'));
        $this->addElement($oNote);

        foreach($aAnswerList as $aAnswerValue){
            $oCheckBox = new Zend_Form_Element_Checkbox('answer');
            $oCheckBox->setLabel($aAnswerValue['newsletter_question_answer_name']);
            $oCheckBox->isArray(true);
            $oCheckBox->setCheckedValue($aAnswerValue['newsletter_question_answer_id']);
            $this->addElement($oCheckBox);
        }
    }
foreach($aQuestionList为$aQuestionValue){
$aAnswerList=$oAnswerList->getListByQuestionId($aQuestionValue['newsletter\u question\u id');
$oNote=new SilverCms_Core_Form_Element_Note('Note',array('value'=>'。$aQuestionValue['newsletter_question_name'].

); $this->addElement($oNote); foreach($aAnswerList作为$aAnswerValue){ $oCheckBox=新的Zend_表单_元素_复选框(“答案”); $oCheckBox->setLabel($aAnswerValue['newsletter\u question\u answer\u name'); $oCheckBox->isArray(true); $oCheckBox->setCheckedValue($aAnswerValue['newsletter\u question\u answer\u id'); $this->addElement($oCheckBox); } }
但是当我不想在视图中显示表单时

<?php echo $this->filterform;?>

它只显示数组aQuestionList中的最后一个元素,在第二个循环中也是同样的情况
致以最诚挚的问候

您对每个答案复选框使用了相同的名称(“答案”),因此每个复选框都将覆盖上一个复选框。我认为您实际上需要Multicheckbox表单元素:

$answer = new Zend_Form_Element_MultiCheckbox('answer');
foreach($aAnswerList as $aAnswerValue){
    $answer->addMultiOption($aAnswerValue['newsletter_question_answer_id'], $aAnswerValue['newsletter_question_answer_name']);
}
$this->addElement($answer);

这将为每个选项提供一个复选框和标签。

您对每个答案复选框使用相同的名称(“答案”),因此每个选项都将覆盖上一个选项。我认为您实际上需要Multicheckbox表单元素:

$answer = new Zend_Form_Element_MultiCheckbox('answer');
foreach($aAnswerList as $aAnswerValue){
    $answer->addMultiOption($aAnswerValue['newsletter_question_answer_id'], $aAnswerValue['newsletter_question_answer_name']);
}
$this->addElement($answer);

这将为每个选项提供一个复选框和标签。

如果将$aAnswerList作为key=>值,则可以使用$answer->setMultiOptions($aAnswerList);)如果将$aAnswerList作为key=>value,则可以使用$answer->setMultiOptions($aAnswerList);)