我正在尝试在下拉文件填充数据时填充文本框。但是我在结果中得到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);
?>
答案 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);
}