Yii2 renderPartial view in Layout
Yii2 renderPartial view in Layout
我正在尝试在 yii2 上为我的布局渲染一个视图,但出现错误
PHP Notice – yii\base\ErrorException
Undefined variable: dataProvider
我创建了一个具有函数
的控制器类别
public function Wdgcategory()
{
$dataProvider = new ActiveDataProvider([
'query' => Category::find(),
]);
return $this->renderPartial('wdgCategory', [
'dataProvider' => $dataProvider,
]);
}
在我看来,我在 category/wdgCategory.php
中创建了一个视图文件
<?php
use yii\helpers\Html;
use yii\widgets\ListView;
?>
<?= ListView::widget([
'dataProvider' => $dataProvider,
'itemOptions' => ['class' => 'item'],
'itemView' => function ($model, $key, $index, $widget) {
return '<li>'
.Html::a(Html::encode($model->category_name),
['view', 'id' => $model->category_id])
.'<li>';
},
]) ?>
并在布局中添加此代码
<ul>
<?= $this->render('/category/wdgCategory') ?>
</ul>
但我得到错误:未定义的变量:dataProvider
您已经定义了 Wdgcategory()
方法,但您从未使用过它。您只是试图从布局渲染视图而不提供必要的数据 ($dataProvider
)。
在您的情况下,您可能应该为此列表创建小部件:
class CategoriesWidget extends \yii\base\Widget {
public function run() {
$dataProvider = new ActiveDataProvider([
'query' => Category::find(),
]);
return $this->render('categories', [
'dataProvider' => $dataProvider,
]);
}
}
并在您的布局中使用它:
<?= CategoriesWidget::widget() ?>
我正在尝试在 yii2 上为我的布局渲染一个视图,但出现错误
PHP Notice – yii\base\ErrorException
Undefined variable: dataProvider
我创建了一个具有函数
的控制器类别public function Wdgcategory()
{
$dataProvider = new ActiveDataProvider([
'query' => Category::find(),
]);
return $this->renderPartial('wdgCategory', [
'dataProvider' => $dataProvider,
]);
}
在我看来,我在 category/wdgCategory.php
中创建了一个视图文件 <?php
use yii\helpers\Html;
use yii\widgets\ListView;
?>
<?= ListView::widget([
'dataProvider' => $dataProvider,
'itemOptions' => ['class' => 'item'],
'itemView' => function ($model, $key, $index, $widget) {
return '<li>'
.Html::a(Html::encode($model->category_name),
['view', 'id' => $model->category_id])
.'<li>';
},
]) ?>
并在布局中添加此代码
<ul>
<?= $this->render('/category/wdgCategory') ?>
</ul>
但我得到错误:未定义的变量:dataProvider
您已经定义了 Wdgcategory()
方法,但您从未使用过它。您只是试图从布局渲染视图而不提供必要的数据 ($dataProvider
)。
在您的情况下,您可能应该为此列表创建小部件:
class CategoriesWidget extends \yii\base\Widget {
public function run() {
$dataProvider = new ActiveDataProvider([
'query' => Category::find(),
]);
return $this->render('categories', [
'dataProvider' => $dataProvider,
]);
}
}
并在您的布局中使用它:
<?= CategoriesWidget::widget() ?>