选项组以Zend Form选择

时间:2014-04-30 16:02:42

标签: zend-framework select zend-form optgroup

如何在选项组和选项位于我的数据库中的下拉列表中获取选项组?

我在我的数据库中有这个:

id |类别|子类别 1个苹果奶奶史密斯 2个苹果斐济
3香蕉chiquita

并希望选择下拉列表:

苹果

  • 格兰尼史密斯
  • 斐济

香蕉

  • 奇基塔

在我的控制器中,我从db获取行的数组。我有一个阵列 $ arrSelectSubcategory和$ arrSelectCategory。 答案我发现建议使用多维数组,所以我试图将表单传递给二维数组:

->addMultiOptions($arrSelectCategory->($arrSelectSubcategory));

但这不起作用。答案我发现像this one只处理预定义的选项组,我从我的数据库中获取它们。

1 个答案:

答案 0 :(得分:1)

想象一下你的数组中的值如下:

$fruits = array('apples'=>array('id_granny_smith'=>'granny smith', 
                                'id_fiji'=>'fiji'), 
                'bananas' => array('id_chiquita'=>'chiquita')
               );

您可以尝试这样的事情:

$fruits_select = new  Zend_Form_Element_Select('fruits', array('escape' => false));
foreach($fruits as $fruit => $name_fruit){
    $fruits_select->addMultiOptions(array($fruit=>array()));
    foreach($name_fruit as $key => $val){
            $fruits_select ->addMultiOption($key, $val);
    }
}

结果是:

<select name="fruits" id="fruits">
    <optgroup label="apples">
    </optgroup>
    <option value="id_granny_smith" label="granny smith">granny smith</option>
    <option value="id_fiji" label="fiji">fiji</option>
    <optgroup label="bananas">
    </optgroup>
    <option value="id_chiquita" label="chiquita">chiquita</option>
</select>

<小时/> 在你的评论中,你的数组是这样的:

$fruits_bdd = array('0' => array('id' => 1, 'category' => 'apples', 'subcategorie'=> 'granny smith'),
                    '1' => array('id' => 2, 'category' => 'apples', 'subcategorie'=> 'fiji'),
                    '2' => array('id' => 3, 'category' => 'bananas', 'subcategorie'=> 'chiquita'),
);

为了让数组$fruits像我的答案一样,做到这一点:

$fruits = array();  
foreach($fruits_bdd as $fruit_bdd){
        $fruits[$fruit_bdd['category']][$fruit_bdd['id']] =$fruit_bdd['subcategorie'];
}