3

yii で複数選択のリストボックスが必要です。フォーム領域のコードがありますが、フィールドに「配列」という単語としてデータベースに保存されます。この問題を処理するにはどうすればよいですか?

ビューと更新中に戻る方法とグリッドビューも

<?php echo $form->dropDownList($model,'clients', 
  CHtml::listData(client::model()->findAll(array('order'=>'id')), 'id', 'name'),
     array('empty'=>'','multiple'=>'multiple','style'=>'width:400px;','size'=>'10'));
?>

ありがとうございました。

4

5 に答える 5

3

私にとってはこれが機能します:

'multiple'=>true

あなたのコードは次のようなものでなければなりません:

<?php echo $form->dropDownList($model,'clients', 
  CHtml::listData(client::model()->findAll(array('order'=>'id')), 'id', 'name'),
     array('empty'=>'','multiple'=>true ,'style'=>'width:400px;','size'=>'10'));
?>
于 2013-01-18T13:46:18.740 に答える
0

このコードをコントローラーに保持する

$arr = implode(",",$model->attributes['hobbies']);

$model->hobbies=$arr;

コントローラーで作成し、最初のif条件で更新します

データベースでは、区切り文字としてコンマを使用して値を確認できます

于 2012-06-06T05:23:40.793 に答える
0

それがリレーションの場合は、これを使用することをお勧めします: http://yiiext.github.com/activerecord-relation-behavior/これは、配列を多対多リレーション ジャンクション テーブルに保存します。

それ以外の場合は、Orlymee が言ったように、配列の各項目をループして保存するか、配列をシリアル化するか、コンマ区切りの値に分解して、表示中に保存するために選択した方法の逆を実行する必要があります。

于 2012-05-27T15:49:02.153 に答える