Zend表单 - 如何删除optgroup标签

时间:2012-04-02 01:33:43

标签: php zend-framework zend-form

我知道之前有人问过,但我似乎无法找到答案......或解决方案。

我有很多选择框使用'multiselect'。下拉列表正在从数据库中填充,数组中的第一个值始终为“Select One”。我无法改变,我正在重写一个应用程序,而不是根本不更改数据库。

一切正常,但它们总是以带有标签的'optgroup'标签形式出现,标签总是在列表的顶部加上'0'。这些方框总是说“选择一个”,这很棒,但扩展后你会看到顶部的'0'...这是optgroup标签的'label'属性。

我这样做就像这样...

$Criteria = new Criteria();
$Criteria->add( DictionaryPeer::CATEGORY, 'Progress Notes: Program Status' );
$Criteria->addAscendingOrderByColumn( 'Ordinal' );
$ProgramStatuses = DictionaryPeer::doSelect($Criteria);

$ProgramStatusList = array();
foreach ($ProgramStatuses as $ProgramStatus) {
    $ProgramStatusList [ $ProgramStatus->getDictionaryID() ] = $ProgramStatus->getWord();
}

$form->programstatus->addMultiOptions( array(
$ProgramStatusList ));

echo $form->programstatus->renderLabel() . $form->programstatus->renderViewHelper();

我只是想删除'0'仅用于演示目的......

任何帮助总是受到赞赏......

谢谢!

1 个答案:

答案 0 :(得分:1)

如果你想摆脱OPTGROUP,你只需要将一个简单的数组作为参数传递给addMultiOptions(),如下所示:

$form->programstatus->addMultiOptions($ProgramStatusList);

因为如果你传递一个多维数组,Zend_Form会间接地将父数组的每个索引都视为group of options(使用FormElement View Helper)。