Nano Hash - криптовалюты, майнинг, программирование

Yii 2.0 dropDownList не заполнен данными базы данных

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

Контроллеры\CasesController:

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')

);

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

25.03.2015

  • Вы должны исправить findAllCategories(), которые фактически возвращают объект ActiveQuery... 25.03.2015
  • я не уверен, что изменить его на 25.03.2015

Ответы:


1

Измените их на строки

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

to:

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

а также

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

to:

echo $form->field($searchModel, 'newcategory')
          ->dropDownList(
              ArrayHelper::map($allCategory, 'id', 'name')
            )
?>
25.03.2015
  • Когда я это делаю, выпадающий список просто пуст @Jorgen 30.03.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..