2012-03-13 25 views
1

誰でも知っているので、次のコードでこのエラーメッセージが表示されます。私は、各オプションはユーザーのIDの値を持ち、オプションのテキストはその名前になるので、配列からデータを表示させようとしています。現在のところ、最後の人物しか表示されません。CIドロップダウン選択

A PHPエラーが重大

を発生しました:319:不正ISSETまたは空

ファイル名にタイプをオフセット:

行番号form_helper.phpヘルパー/

警告メッセージ

<?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'を呼び出すときに' $ user'に最後の '$ user'を入れるだけです。 – rjz

+0

319行はどちらですか? –

+0

@rjzどうすれば問題を解決できますか? –

答えて

2

foreachから$options[] = $user;行を削除します。 form_dropdownは、値をキーとして、テキストを値として持つ配列を想定しています。

EDIT:$optionsは1D配列(2D配列ではありません)である必要があります。

$options = array(); 

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

EDIT 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/です。 user_idではない名前の隣に0と1が表示されていることに注目してください。しかし、私がフォームを投稿すると、正しいuser_idが表示されます –

+0

@ user1244239:Huh?どうしたの? 0と1はどこにありますか? –

+0

新しいメッセージを作成するドロップダウンをクリックして、各ユーザーに0と1がどのように表示されるかを確認します –

2

ドキュメントから:http://codeigniter.com/user_guide/helpers/form_helper.html

最初のパラメータが2番目のパラメータはオプションの連想配列を含んでいます、そして三番目のパラメータは、あなたがしたい値が含まれます、フィールドの名前が含まれています選択される。

連想配列を渡していて、文字列が必要です。

+0

このエラーを修正していただきありがとうございます。 –

関連する問題