2012-03-13 181 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