2013-01-16 57 views
0

嗨,大家好我有一个应用程序需要总结产品的价值,我有一个在表单中的多选择下拉列表,但问题是我需要在选项中添加属性价格才能总和用javascript选择的值。DropDownList加载选项属性

我的代码是这样的

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

我怎样才能在选项中添加属性,价格是多少?

+0

因此,您想基于用户在同一页面上选择的内容向下拉列表添加选项吗?如果是这样,那么你将需要使用javascipt。 – Pitchinnate

回答

1

我不确定有一个好的内置方式来处理这个问题。一个哈克方法将是的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中轻松解析。