尝试通过Yii2中的javascript获取自动文本文本框时获取空值

时间:2016-04-21 11:43:08

标签: javascript php yii2

我正在尝试在下拉文件填充数据时填充文本框。但是我在结果中得到null。当我传递'id'时它返回值但是当我传递一个名字时它返回null

控制器

public function actionGetForProduction($catid)
    {
        $bottle = Productnames::findOne($catid);
        echo Json::encode($bottle);
    }

_form中的Javascript代码

<?php
$script = <<< JS
$('#catid').change(function(){   
    var catid = $(this).val();

     $.get('index.php?r=production/productnames/get-for-production',{ catid : catid }, function(data){
        alert(data);

    });
});
JS;
$this->registerJs($script);
?>

错误的屏幕截图 Here

1 个答案:

答案 0 :(得分:2)

如果将参数传递给findOne()作为字符串,默认情况下它是一个主键字段。在您的情况下,您必须像findOne(['catid'=>$catid])

那样传递数组

但是如果你想让你的控制器接受id或name,那么试试这个:

public function actionGetForProduction()
        {
            if($id=Yii::$app->request->get('id')){
                 $bottle = Productnames::findOne($id);
               }
            elseif($catid=Yii::$app->request->get('catid')){
                 $bottle=Productnames::findOne(['catid'=>$catid]);
               }
            echo Json::encode($bottle);
        }