2015-04-23 3 views
6

Ok Я пытаюсь использовать виджет Картик Depdrop, но получаю эту ошибку 500 (Внутренняя ошибка сервера)Yii2 DepDrop Картик

У меня есть родительская модель Марка и подмоделью CarModel

Вот мои файлы:

CarsController.php

public function actionSubcat() { 
    $out = []; 
    if (isset($_POST['depdrop_parents'])) { 
     $parents = $_POST['depdrop_parents']; 
     if ($parents != null) { 
      $cat_id = $parents[0]; 
      $out = self::getSubCatList($cat_id); 
      // the getSubCatList function will query the database based on the 
      // cat_id and return an array like below: 
      // [ 
      // ['id'=>'<sub-cat-id-1>', 'name'=>'<sub-cat-name1>'], 
      // ['id'=>'<sub-cat_id_2>', 'name'=>'<sub-cat-name2>'] 
      // ] 
      echo Json::encode(['output'=>$out, 'selected'=>'']); 
      return; 
     } 
    } 
    echo Json::encode(['output'=>'', 'selected'=>'']); 
} 

модель Cars.php

public function getSubCatList($cat_id) 
{ 
    $data=\common\models\CarModel::find() 
     ->where(['brand_id'=>$cat_id]) 
     ->select(['id','name_ru AS name' ])->asArray()->all(); 

    return $data; 

} 

и мой файл VIW

<?php $catList = ArrayHelper::map(Brand::find()->all(),'id','name_ru'); ?> 

<?= $form->field($model, 'brand_id')->dropDownList($catList, 
    [ 
     'prompt' => 'Select brand', 
     'id'=>'brand_id-id' 
    ]); 
?> 

<?=$form->field($model, 'car_model_id')->widget(DepDrop::classname(), [ 
     'options' => ['id'=>'car_model_id-id'], 
     'pluginOptions'=>[ 
      'depends'=>['brand_id-id'], 
      'placeholder' => 'Select...', 
      'url' => Url::to(['subcat']) 
     ] 
    ]); 

?> 

, что это моя ошибка?

+1

было бы полезно, если вы не можете какие внутренние вы получите сообщение об ошибке Yii2 (../runtime/logs/app.log) – Manquer

+0

распечатайте и покажите нам свои '$ out' и' $ _POST ['depdrop_parents'] '. –

+0

depdrop_parents [0]: 1 1 - мой родительский id и этот массив $ out (2) {[0] => массив (2) {["id"] => строка (1) "1" [ "name"] => string (3) "318"} [1] => array (2) {["id"] => string (1) "2" ["name"] => string (3) " 320 "}} –

ответ

1

Код внутри контроллера

$out = self::getSubCatList($cat_id); 

следующие изменения

$out = Cars::getSubCatList($cat_id); 

и определить getSubCatList метод статический метод

public static function getSubCatList($cat_id) 
+0

500 (Внутренняя ошибка сервера) еще раз ( –

+0

поместил содержимое файла журнала здесь (** runtime/logs/app.log **) – Reza1607

+0

Я добавил использование yii \ helpers \ Json, и это сработало))) спасибо) –

Смежные вопросы