使用CakePHP显示select中的重复选项值

wvmv3b1j  于 2022-11-11  发布在  PHP
关注(0)|答案(2)|浏览(126)

使用CakePHP 1.3中的表单帮助器,我试图显示一个列表(下拉列表),其中包含几个重复的值字段(当然是在<option>标记中),但Cake似乎不想让我这样做,并且只输出每个值的第一个出现。
例如,下面是$form-〉输入的'options'数组:

array(
    0 => 'description 0',
    0 => 'description 1',
    0 => 'description 2',
    1 => 'description 3'
);

它将输出如下内容:

<select>
    <option value="0">description 0</option>
    <option value="1">description 3</option>
</select>

我在寻找这样的结果:

<select>
    <option value="0">description 0</option>
    <option value="0">description 1</option>
    <option value="0">description 2</option>
    <option value="1">description 3</option>
</select>
svdrlsy4

svdrlsy41#

当然,在PHP中,同一个键不能在数组中使用两次。
但是正如在这个article蛋糕上所说的,知道如何在2.x中用相同的值创建多个键:

$options = array(
    ...
    array('name' => 'United states', 'value' => 'USA'),
    array('name' => 'USA', 'value' => 'USA'),
 );

 $html = $this->Form->select('field', $options);

导致

<option value="USA">United states</option>
<option value="USA">USA</option>

如您所见,您现在在这里获得了两倍(当然也可能更多)的值。
请参阅表单帮助器类本身的文档(cake2.x)。但不确定1.3是否已经支持它。
如果你升级,你将能够利用所有的蛋糕的最新魔术。

daupos2t

daupos2t2#

因此,正如我所担心的,这个问题比我最初想象的要深,它是由PHP引起的,PHP(显然)不允许重复的键。
因此,我的解决方案如下(如果有人感兴趣的话):
1.建立新的Helper以扩充FormHelper
1.复制原始函数__selectOptions()从表单帮助器到新帮助器中
1.只需更改此行:
foreach ($elements as $name => $title) {

作者:

foreach ($elements as $title => $name) {
1."成交"
这不是最好的解决方案,因为如果你想更新你的cakephp到最新版本后,这样做,你必须复制/粘贴的功能再次,并做同样的伎俩。

使用方法:

1.以相反的方式声明您的options数组:array('description' => 'key);
1.在您看来,不要执行$form->input,而应该执行$yourhelper->input
尼可拉斯

相关问题