2012-03-13 9 views
1

任何人都知道爲什麼使用以下代碼我收到此錯誤消息。我試圖讓它顯示數組中的數據,因爲每個選項都有用戶ID的值,而選項的文本將是他們的名字。截至目前它只顯示最後一個人。CI下拉列表選擇

一個PHP錯誤遇到

嚴重性:警告

消息:isset或空

名非法偏移類型:傭工/ form_helper.php

行號:319

<?php echo form_label('Recipient', 'recipient'); ?> 

<?php 

$data = array(
    'name' => 'to', 
    'class' => 'required' 
); 

foreach($users AS $user) 
{ 
    $options = array (
     $user->user_id => $user->first_name.' '.$user->last_name 
    );  
} 
?> 

<?php echo form_dropdown($data, $options); ?> 

UDPATE:

<?php echo form_label('Recipient', 'recipient'); ?> 

<?php 

$data = array(
    'name' => 'to', 
    'class' => 'required' 
); 

$options = array(); 

foreach($users AS $user) 
{ 
    $options[] = array (
     $user->user_id => $user->first_name.' '.$user->last_name 
    ); 

    $options[] = $user; 
} 
?> 

<?php echo form_dropdown($data, $options); ?> 

任何其他的想法?

+1

一個注意:還有你的'$ options'陣列正在通過你的循環每次重新實例。這意味着在您嘗試調用'form_dropdown'時,它將只包含'$ users'中的最後'$ user'。 – rjz 2012-03-13 19:23:28

+0

哪一行是319? – 2012-03-13 19:23:34

+0

@rjz所以我如何解決這個問題。 – 2012-03-13 19:25:34

回答

2

從您的foreach中刪除行$options[] = $user;form_dropdown需要一個數組,其值爲鍵,文本爲值。

編輯:$options需要是一維數組(不是二維數組)。

$options = array(); 

foreach($users AS $user) 
{ 
    $options[$user->user_id] = $user->first_name.' '.$user->last_name; 
} 

編輯2:

$options = array(-1 => 'Select an option'); // Start with a "default option" 

foreach($users AS $user) 
{ 
    $options[$user->user_id] = $user->first_name.' '.$user->last_name; 
} 

form_dropdown('to', $options, -1, 'class="required"'); // Make the default "selected" 
+0

唯一的問題是http://jsfiddle.net/Z47m9/。注意它在名稱旁邊顯示0和1,這不是user_id,但是當我發佈表單時,它顯示了正確的user_id – 2012-03-13 20:41:33

+0

@ user1244239:咦?有什麼問題?你在說什麼這個0和1? – 2012-03-13 20:42:20

+0

點擊撰寫新郵件裏面的下拉菜單,注意它是如何爲每個用戶顯示0和1 – 2012-03-13 20:44:24

2

從文檔:http://codeigniter.com/user_guide/helpers/form_helper.html

第一個參數包含字段的名字,第二個參數將包含選項的關聯數組,第三個參數是你想要的值被選中。

你正在傳遞一個關聯數組,它期待一個字符串。

+0

非常感謝你修復了這個錯誤。 – 2012-03-13 20:41:13