2012-09-10 59 views
2

我已經生成了一個表單,多個字段是多個選擇。的值是從一個foreach產生(由於所需的格式):cakephp選擇多個只傳遞第一個值

echo '<select name="data[formdata]['.$question['PrPageQuestion']['ID'].']" id="formdata'.$question['PrPageQuestion']['ID'].'" multiple="multiple">'; 
foreach($contacts as $contact): 
    echo '<option value="'.$contact['PrDataContact']['ID'].'">'.$contact['PrDataContact']['Name'].' ('.$contact['PrDataContact']['Email'].')</option>'; 
endforeach; 
echo '</select>'; 

然而,當我選擇多個並提交表單,我運行調試只有一個值被傳遞,而不是如預期字符串。

的HTML輸出是:

<select name="data[formdata][2]" id="formdata2" multiple="multiple"> 
    <option value="13">A Contact ([email protected])</option> 
    <option value="14">A. Nother-Contact ([email protected])</option> 
    <option value="15">A. New. Contact ([email protected])</option> 
    <option value="17">New Conti ([email protected])</option> 
</select> 

的var_dump的輸出是:

array(2) { 
    ["_method"]=> string(4) 
    "POST" ["data"]=> array(1) { 
     ["formdata"]=> array(8) { 
     //other data was here 
     [1]=> string(1) "1" 
     [2]=> string(2) "15" 
     [3]=> string(1) "4" 
     [4]=> string(0) "" 
     } 
    } 
} 
+0

我們可以看到html嗎? – Phil

+0

您的意思是哪個html的位? – user122642

+1

創建的select的輸出,並且我們可以有一個var_dump的$ _POST,當你選擇了多個項目 – Waygood

回答

2

您需要在名稱後加[]告訴HTML,這是值的數組是提交

echo '<select name="data[formdata]['.$question['PrPageQuestion']['ID'].'][]" id="formdata'.$question['PrPageQuestion']['ID'].'" multiple="multiple">'; 
foreach($contacts as $contact): 
    echo '<option value="'.$contact['PrDataContact']['ID'].'">'.$contact['PrDataContact'['Name'].' ('.$contact['PrDataContact']['Email'].')</option>'; 
endforeach; 
echo '</select>'; 

您應該然後得到:

array(2) { 
    ["_method"]=> string(4) 
    "POST" ["data"]=> array(1) { 
     ["formdata"]=> array(8) { 
     //other data was here 
     [1]=> string(1) "1" 
     [2]=> array(2) { 
      [0]=>string(2) "15" 
      [1]=>string(2) "17" 
     }, 
     [3]=> string(1) "4" 
     [4]=> string(0) "" 
     } 
    } 
} 
+0

奇怪的是我已經使用它沒有[]之前,它給了像1,2 ,3,4。但是,這工作得很好,所以謝謝。 – user122642

+0

謝謝,我沒有意識到[]結束:) – user984976