0

嗨,伙计们,我有一个需要对产品值求和的应用程序,我在表单中有一个多选下拉菜单,但问题是我需要在选项中添加属性 price 才能对使用 javascript 选择的值求和。

我的代码是这个

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

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

4

1 回答 1

1

我不确定是否有一种很好的内置方法来处理这个问题。一种 hacky 方法是在将 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 回答