Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php yii2 ActiveDataProvider是否与ActiveForm结合使用?_Php_Yii_Yii2_Cactivedataprovider - Fatal编程技术网

Php yii2 ActiveDataProvider是否与ActiveForm结合使用?

Php yii2 ActiveDataProvider是否与ActiveForm结合使用?,php,yii,yii2,cactivedataprovider,Php,Yii,Yii2,Cactivedataprovider,我正在尝试使用ActiveDataProvider作为ActiveDataForm的源。 但是,我无法访问该信息。不在视图或控制器内。diseaseList+ListView的工作方式 我似乎不知道哪里出了错。即使我得了这样的病: $disease = new Disease(); $disease = Disease::find()->where(['id'=>1]); 我无法访问数据。只有当我在控制器中引发新的疾病时,我才能使ActiveForm正常工作 控制器: public

我正在尝试使用ActiveDataProvider作为ActiveDataForm的源。 但是,我无法访问该信息。不在视图或控制器内。diseaseList+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(); ?>

这是我收到的错误。
这里有点不对劲,那就是:

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

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

要了解出现此错误的原因:您正在通过
$disease=disease::find()->where(['id'=>1])
ActiveQuery
传递给
ActiveForm
,这是错误的
ActiveForm
不接受
ActiveQuery

谢谢!明天早上我会试试这个!这就解决了问题。我还听取了学院的建议,开始阅读Yii2中最重要的元素,他告诉我,如果我以前这样做的话,整个问题就不存在了。谢谢你的帮助!