2010-08-12 101 views
2

在Cakephp 1.3中使用表單助手,我試圖顯示一個列表(下拉列表),其中包含幾個重複的值字段(當然在<option>標籤),但蛋糕似乎不想讓我這樣做,並只輸出每個值的第一次出現。在CakePHp中選擇顯示重複的選項值


舉例來說,這裏的 '選項' 陣列的形式 - $>輸入:

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> 


乾杯,
尼古拉斯。

回答

0

因此,擔心這個問題比我第一次想到的更深,它是由PHP引起的,它並不明顯允許重複鍵。

因此,這裏是我的解決方案(如果任何人的興趣):

  1. 創建一個從表單輔助擴展表單助手
  2. 複製原有功能__selectOptions()一個新幫手到您的新幫手
  3. 只需更改此行:
    foreach ($elements as $name => $title) {
    通過:
    foreach ($elements as $title => $name) {
  4. 完成!

這並不是因爲如果你想這樣做,你必須複製/粘貼再次後的功能來更新您的CakePHP到最新版本,並做同樣的伎倆最好的解決方案。


如何使用它:

  1. 聲明你options陣列周圍的其他方法:array('description' => 'key);
  2. 在您看來,而不是做$form->input,只是做$yourhelper->input


Nicolas。

1

當然,您不能在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是否已經支持它。

如果升級,您將能夠利用所有蛋糕的最新魔力。