yii2 ActiveDataProvider в сочетании с ActiveForm?

0

Я пытаюсь использовать ActiveDataProvider в качестве источника для моего ActiveDataForm. Однако я не могу получить доступ к этой информации. Не изнутри представления или контроллера. Как всегда работает функцияList + ListView.

Я не могу понять, где я ошибся. Даже когда я получаю такую болезнь:

$disease = new Disease();
$disease = Disease::find()->where(['id'=>1]);

Я не могу получить доступ к данным. Только когда я инициирую новое заболевание в контроллере, я могу заставить ActiveForm работать правильно.

контроллер:

public function actionIndex($id = 1)
{
    $disease = new ActiveDataProvider([
        'query' => Disease::find()
        ->where(['id'=>$id]),
            'pagination' =>  [
                'pageSize' => 1,
            ]
        ]);

    $diseaseList = new ActiveDataProvider([
        'query' => Disease::find()->orderBy('LOWER(name)'),
            'pagination' =>  [
                'pageSize' => 20,
            ]
        ]);
    return $this->render('index', ['disease' => $disease, 'diseaseList' => $diseaseList]);
}

На мой взгляд:

<?php 
echo ListView::widget([
'dataProvider' => $diseaseList,
'itemView' => function($diseaseList, $key, $index, $widget)
{
    return 
        Html::a($diseaseList->name,
            Url::toRoute(['disease/index', 'id' => $diseaseList->primaryKey]));
}
]); 
?>

<?php
    $form = ActiveForm::begin([
    'id' => 'disease-form-vertical'
    ]);
    ?>
        <?= $form->field($disease, 'name') ?>
        <?= $form->field($disease, 'description') ?>
        <?= $form->field($disease, 'transmission') ?>
        <?= $form->field($disease, 'actions') ?>
        <?= $form->field($disease, 'report') ?>
        <?= $form->field($disease, 'exclusion') ?>
        <?= $form->field($disease, 'notes') ?>
    <div class="form-group">
        <?= Html::submitButton('Login', ['class' => 'btn btn-primary']) ?>
        <?= Html::resetButton('Reset', ['class' => 'btn btn-default']) ?>
    </div>
    <?php ActiveForm::end(); ?>

Вот ошибка, которую я получаю. Изображение 174551

Теги:
yii2
yii
cactivedataprovider

1 ответ

1
Лучший ответ

Здесь что-то не так, а именно:

$disease = Disease::find()->where(['id'=>1]);

Которые должны быть:

$disease = Disease::find()->where(['id'=>1])->one();

Чтобы узнать, почему вы получаете эту ошибку: вы передаете ActiveQuery в свой ActiveForm по $disease = Disease::find()->where(['id'=>1]) что неверно. ActiveForm не принимает ActiveQuery.

  • 0
    Спасибо! Попробую это утром!
  • 0
    Добро пожаловать дорогой;)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню