DropDownList加载选项属性

时间:2013-01-16 14:03:11

标签: php yii

我有一个应用程序需要对产品值求和,我在表单中有一个多选下拉列表,但问题是我需要在选项中添加属性价格才能将所选值与的JavaScript。

我的代码就是这个

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

如何在选项中添加属性价格?

1 个答案:

答案 0 :(得分:1)

我不确定是否有一个很好的内置方法来处理这个问题。一个hacky方法是在将listData的value设置为多值管道分隔值时使用匿名函数,如下所示:

<?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中稍微简单的解析。