2015-03-25 4 views
0

Попытка сделать выпадающий список в моем представлении, который заполнен данными из таблицы базы данных под названием «Категория». Однако это не работает, и ничего не заселено.Yii 2.0 dropDownList не заполнен данными базы данных

Контроллеры \ контроллеровНаклейки:

public function actionIndex() 
{ 

    $searchModel = new CaseSearch(); 
    $allCategory = new Category; 
    $allCategory = Category::findAllCategories(); 

    $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 

    $post_obj = Yii::$app->request->post(); 

    $category=1; 
    if(isset($post_obj['CaseSearch']['category'])){ 
     $category = $post_obj['CaseSearch']; 
     $dataProvider = $searchModel->searchByCategory($category); 
    } 

    $searchModel->category = $category; 

    return $this->render('index', [ 
     'searchModel' => $searchModel, 
     'dataProvider' => $dataProvider, 
     'post' => $post_obj, 
     'allCategory' => $allCategory 
    ]); 
} 

модели \ Категория:

class Category extends \yii\db\ActiveRecord 
{ 
public $id; 
public $name; 

/** 
* @inheritdoc 
*/ 
public static function tableName() 
{ 
    return 'Category'; 
} 

/** 
* @inheritdoc 
*/ 
public function rules() 
{ 
    return [ 
     [['id'], 'integer'], 
     [['name'], 'required'], 
     //[['LastEdited', 'Published'], 'safe'], 
     [['name'], 'string', 'max' => 45] 
    ]; 
} 

public static function findAllCategories() 
{ 
    Category::find()->indexBy('id')->all(); 
    return self::find(); 


} 

Вид:

echo $form->field($searchModel, 'newcategory') 
    ->dropDownList(
     $allCategory   // Flat array ('id'=>'label') 

); 

Любая идея, почему это не работает?

+0

Вы должны исправить 'е indAllCategories() ', которые фактически возвращают объект ActiveQuery ... – soju

+0

Я не уверен, что изменить его на –

ответ

0

Изменение этих линий в

$allCategory = new Category; 
$allCategory = Category::findAllCategories(); 

к:

$allCategory = Category::find()->all(); 

и

echo $form->field($searchModel, 'newcategory') 
->dropDownList(
    $allCategory   // Flat array ('id'=>'label') 
); 

к:

echo $form->field($searchModel, 'newcategory') 
      ->dropDownList(
       ArrayHelper::map($allCategory, 'id', 'name') 
      ) 
?> 
+0

Когда я это сделаю, выпадающий список просто пуст @Jorgen –

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