Yii2:Kartik Dependent Dropdown 在获取结果时抛出错误

Yii2: Kartik Dependent Dropdown throwing error when fetching results

我在 Yii2 中使用 DropDownlist、select2 和 Depdrop,

这是我的表格:

    <?php   $empresa = ArrayHelper::map(Companies::find()->all(),'company_id', 'company_name');
            echo $form->field($model, 'companies_company_id')->dropDownList($empresa, ['id'=>'company_id']); ?>

    <?php   echo $form->field($model, 'branches_branch_id')->widget(DepDrop::classname(), [
            'type'=>DepDrop::TYPE_SELECT2,
            'options'=>['id'=>'branch_id'],
            'select2Options'=>['pluginOptions'=>['allowClear'=>true]],
            'pluginOptions'=>[
                'depends'=>['company_id'],
                'placeholder'=>'Seleccionar sucursal...',
                'url'=> $base,
            ]
        ]);   
    ?>

这是我的模型:

public static function getBranches($branch_id)
{
    $data=Branches::find()
   ->where(['companies_company_id'=>$branch_id])
   ->select(['branch_id','branch_name'])->AsArray()->all();
    //$data2 = ArrayHelper::map($data, 'branch_id','branch_name');
    //var_dump($data[0]);
    //exit;
    if(empty($data))
    {
        return $data;
    }else
    {
        return $data[0];    
    }

}

这是我的控制器:

public function actionSubcat()
{
  $sucursal = [];
  if (isset($_POST['depdrop_parents'])) {
      $parents = $_POST['depdrop_parents'];

      if ($parents != null) {
          $id_branch = $parents[0];
          $Branch = new Branches();
          $sucursal = $Branch->getBranches($id_branch);
          //$Branch->getBranches($cat_branch);

          //ArrayHelper::map(Branches::find()->all(), 'branch_id', 'branch_name');

          //ArrayHelper::map(Branches::find()->all(), 'branch_id', 'branch_name');//self::getSubCatList($branch_id);

          echo Json::encode(['output'=>$sucursal, 'selected'=>'']);
          return;
        }
      }
      echo Json::encode(['output'=>[], 'selected'=>'']);
}

您需要更改您的模型 function getBranches(),如果您看到 DOCS 它说您需要 return 以下格式的下拉列表结果

// [
//    ['id'=>'<sub-cat-id-1>', 'name'=>'<sub-cat-name1>'],
//    ['id'=>'<sub-cat_id_2>', 'name'=>'<sub-cat-name2>']
// ]

而您 return 没有任何意义

if(empty($data))
{
    return $data;
}else
{
    return $data[0];    
}

在检查它是否为空后 returning $data 有什么意义?无论如何
您的功能应更改为以下内容,它将开始工作

public static function getBranches($branch_id)
    {
        $data=Branches::find()
       ->where(['companies_company_id'=>$branch_id])
       ->select(['branch_id','branch_name'])->all();

         $arr = [];
         foreach ($data as $branch) {
            $arr[] = ['id' => $branch->branch_id, 'name' => $branch->branch_name];
        }
        return $arr;
    }