我正在尝试使用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();
要知道你为什么得到这个错误:你是通过ActiveQuery
你ActiveForm
的$disease = Disease::find()->where(['id'=>1])
这是不对的。ActiveForm
不接受ActiveQuery
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句