どうぞよろしくお願いいたします。ドロップダウン リストにすべての製品の名前を表示する select2 などの拡張機能を使用しているという問題があり、問題なく動作します。私のデータベースでは、すべての製品に個別の価格があります。そのため、選択したすべての製品の価格の合計を次のドロップダウンに表示したいと思います。そこで、ajax を使用して製品 ID をコントローラーに送信し、製品価格を見つけました。残念ながら、新しい製品を追加すると、製品の以前の ID が変更され、価格も変更されるため、すべての製品価格を合計することはできません。しかし、製品が選択されたときに製品の価格を変数に保持したい。
フォームコード:
<div class="row">
<?php echo $form->labelEx($model,'item_list'); ?>
<?php
$data = CHtml::listData(Products::model()->findAll(),'id', 'name');
echo Select2::activeMultiSelect(
$model, 'item_list', $data, array(
'required' => 'required',
'style' => 'width: 270px;',
'placeholder' => 'Add Product',
'select2Options' => array(),
'ajax' => array('type'=>'POST',
'url'=>$this->createUrl('totalOrderPrice'), //url to call.
'update'=>'#price', //selector to update
'data'=>array('item_list'=>'js:this.value'),
),
)
);
?>
<?php echo $form->error($model,'item_list'); ?>
</div>
コントローラーコード:
...
...
public $prices;
...
...
public function actionTotalOrderPrice(){
$data = Products::model()->findByPk(array('id'=>$_POST['item_list']));
$this->prices += $data->prices;
echo CHtml::tag('input', array( 'type'=>'text' , 'name'=>'Order[price]' , 'value' => $this->prices));
}
この問題を解決するために多くの時間を費やしましたが、とにかくできませんでした。誰か助けてください。
前もって感謝します、シムル