0

在我的项目中,我需要有许多带有数组标记名称的下拉字段,如下所示:

<select name="language[]">...</select>
<select name="language[]">...</select>
<select name="language[]">...</select>

由于我需要为formSelect它渲染 Zend 的视图助手,我认为这很简单:

for($i = 0; $i < 3; $++){
    echo $this->formSelect('language[]', $this->languages[$i],
                                         $this->attribs[$i],
                                         $this->languageOptions[$i]);
}

但我错了:Zend 没有将它们呈现为常规的下拉字段,而是决定做一个聪明的人并将它们呈现为多选字段。

我理解这种行为背后的想法,但碰巧它formSelect提供的帮助对我的需求来说太多了。

现在,我可以使用 JavaScript 来修改它以删除multiple="multiple"属性以将它们转换为常规下拉列表...

但出于好奇,除了修改其底层代码之外,有没有办法formSelect将这些元素呈现为常规下拉字段?

4

1 回答 1

1

您是对的,formSelect助手决定根据元素名称是array[].

但是,您可以覆盖该行为。

为此,请将元素添加multiple => false到您的列表中$attribs

例如

$attribs = array('multiple' => false, 'class' => 'selection');
echo $this->formSelect('not_array[]', '', $attribs, $options);

这应该防止它试图使元素支持多个选择。

于 2012-04-29T16:37:03.197 回答