Yii2在更改下拉列表时调用2个函数

时间:2014-12-18 21:34:53

标签: ajax get return onchange yii2

我有几个下拉菜单,并且在更改其中任何一个时,我想为文本框提供一个值。 我有一个代码,我放在我的每个下拉列表中,它对我来说非常适合:

<?= $form->field($model4, 'prevoditelj')->dropDownList(ArrayHelper::map(
            \app\models\Prevoditelj::find()->orderBy('idprevoditelj')->asArray()->all(),
            'idprevoditelj',
            'naziv'
        ),['onchange'=>'
            $.get( "'.Url::base().'/index.php?r=zadatak/trosak&id='.$model->projekt.'_"+$("#'.Html::getInputId($model3, 'usluga').'").val()+"_"+$("#'.Html::getInputId($model3, 'dodatak').'").val()+"_"+$("#'.Html::getInputId($model3, 'obr_jedinica').'").val()+"_"+$("#'.Html::getInputId($model4, 'prevoditelj').'").val(), function( data ) {
                  $( "#'.Html::getInputId($model, 'trosak').'" ).val( data );
                });
                '])  ?>

在控制器中我有:

public function actionCijena($id){
        $sve=explode("_",$id);//0 - projekt_id, 1 - usluga, 2 - dodatak/jez_kombinacija, 3 - obr_jedinica
        $projekt = Projekt::findone($sve[0]);
        $klijent = Klijent::findone($projekt['klijent']);

        $cjenik_klijent = CjenikKlijent::find()
            ->asArray()
            ->where('klijent = :id and usluga = :usluga_id and obr_jedinica = :obr_jedinica and jez_kombinacija = :jez_kombinacija and valuta = :valuta',
                ['id'=>$klijent['idklijent'],'usluga_id'=>$sve[1],'obr_jedinica'=>$sve[3],'jez_kombinacija'=>$sve[2],'valuta'=>$klijent['valuta']])
            ->all();
        //ako nema, gledaj opci cjenik
        if($cjenik_klijent==array()){
            $cjenik_klijent = CjenikOpci::find()
                ->asArray()
                ->where('usluga = :usluga_id and obr_jedinica = :obr_jedinica and jez_kombinacija = :jez_kombinacija and valuta = :valuta',
                    ['usluga_id'=>$sve[1],'obr_jedinica'=>$sve[3],'jez_kombinacija'=>$sve[2],'valuta'=>$klijent['valuta']])
                ->all();
        }
        return $cjenik_klijent[0]['cijena'];

}

我遇到的问题是,现在我想将另一个计算值添加到另一个文本框中。但它需要触发相同的下拉列表。不幸的是,Get无法返回一个数组,因此我需要将其拆分为2个函数,但是如何调用其中的2个?

1 个答案:

答案 0 :(得分:0)

好的,我设法找到一个解决方案,在1个字符串中返回2个值,然后在jquery中展开它们。不知道为什么我没有早点想到这一点。