Yii2布局中的渲染部分视图

Yii2布局中的渲染部分视图,yii2,yii2-advanced-app,Yii2,Yii2 Advanced App,我试图在yii2上呈现布局视图,但出现错误 PHP Notice – yii\base\ErrorException Undefined variable: dataProvider 我使用函数创建了一个控制器类别 public function Wdgcategory() { $dataProvider = new ActiveDataProvider([ 'query' => Category::find(), ]);

我试图在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() ?>

您已经定义了
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() ?>


为什么要从布局中呈现
wdgCategory
视图?它已经由控制器操作中的
renderPartial()
渲染。您需要将变量
dataProvider
添加到渲染调用中:
不工作,我想在布局中从分类OB006创建垂直菜单:我没有使用操作:公共函数Wdgcategory();我正在使用公共函数我想从类别表在版面中创建垂直菜单为什么要从版面中呈现
wdgCategory
视图?它已经由控制器操作中的
renderPartial()
渲染。您需要将变量
dataProvider
添加到渲染调用中:
不工作,我想在布局中从分类OB006创建垂直菜单:我没有使用操作:公共函数Wdgcategory();我使用的是公共功能,我想从分类表中创建布局中的垂直菜单