0

こんにちはみんな私は製品の値を合計する必要があるアプリを持っています、私はフォームに複数選択ドロップダウンを持っています、しかし問題は私がjavascriptで選択された値を合計できるようにするためにオプションに属性価格を追加する必要があるということです。

私のコードはこれです

<?php echo $form->dropDownList($modelpp,'product_id',CHtml::listData(Product::model()->findAll(), 'id', 'name'),array('multiple'=>"multiple", 'size'=>"3" )); ?>

オプションに属性価格を追加するにはどうすればよいですか?

4

1 に答える 1

1

これを処理するための優れた組み込みの方法があるかどうかはわかりません。ハッキーな方法の1つは、listDataの値を複数値のパイプ区切り値に設定するときに、無名関数を使用することです。たとえば、次のようになります。

<?php echo $form->dropDownList($modelpp,
                               'product_id',
                               CHtml::listData(Product::model()->findAll(), 
                                               function($model) {
                                                    return $model->id . '|' . $model->value;
                                               }, 
                                               'name'),
                               array('multiple'=>"multiple", 'size'=>"3" )); 
?>

これにより、各オプションの値は「123 | 456」のようになります。ここで、123はID、456は値になります。JavaScriptでは、これを|で分割する必要があります。IDと値を分離します。また、コントローラーに送信するときにこれを分割し、IDと値を分離する必要があります。

明らかに別の区切り文字を使用することもできますし、無名関数でJSONを返し、それを値に使用することもできます。これにより、JavaScriptとPHPの両方で解析が少し簡単になる可能性があります。

于 2013-01-16T22:15:46.670 に答える