【问题标题】:Undefined variable: dataProvider in yii2未定义变量:yii2中的dataProvider
【发布时间】:2016-03-25 12:31:31
【问题描述】:

在未定义变量中需要帮助:yii2 中的 dataProvider 我已经安装了kartik gridview 扩展。 我是 YII2 的新手。 试图建立网格。 请帮忙。

出现跟随错误
PHP 通知 – yii\base\ErrorException 未定义变量:dataProvider

这是我的控制器代码

echo GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => $gridColumns,
        'containerOptions' => ['style'=>'overflow: auto'], // only set when $responsive = false
        'beforeHeader'=>[
            [
                'columns'=>[
                    ['content'=>'Header Before 1', 'options'=>['colspan'=>4, 'class'=>'text-center warning']], 
                    ['content'=>'Header Before 2', 'options'=>['colspan'=>4, 'class'=>'text-center warning']], 
                    ['content'=>'Header Before 3', 'options'=>['colspan'=>3, 'class'=>'text-center warning']], 
                ],
                'options'=>['class'=>'skip-export'] // remove this row from export
            ]
        ],
        'toolbar' =>  [
            ['content'=>
                Html::button('<i class="glyphicon glyphicon-plus"></i>', ['type'=>'button', 'title'=>Yii::t('kvgrid', 'Add Book'), 'class'=>'btn btn-success', 'onclick'=>'alert("This will launch the book creation form.\n\nDisabled for this demo!");']) . ' '.
                Html::a('<i class="glyphicon glyphicon-repeat"></i>', ['grid-demo'], ['data-pjax'=>0, 'class' => 'btn btn-default', 'title'=>Yii::t('kvgrid', 'Reset Grid')])
            ],
            '{export}',
            '{toggleData}'
        ],
        'pjax' => true,
        'bordered' => true,
        'striped' => false,
        'condensed' => false,
        'responsive' => true,
        'hover' => true,
        'floatHeader' => true,
        'floatHeaderOptions' => ['scrollingTop' => $scrollingTop],
        'showPageSummary' => true,
        'panel' => [
            'type' => GridView::TYPE_PRIMARY
        ],
    ]);

【问题讨论】:

  • 发布您的完整代码。
  • 您需要编辑您忘记包含在问题中的代码,而不是将其作为答案发布。不过,我无法理解它。
  • @Flexo♦ :我刚开始使用stackoverflow。我不熟悉规则。现在我学到了关于发布问题和答案、编辑等的一切。但不幸的是,我被阻止了,现在无法发布新问题并出现以下错误。您已达到问题限制 抱歉,我们不再接受来自此帐户的问题。请参阅帮助中心了解更多信息。你能帮我摆脱这个禁令吗??我已经编辑了我发布的所有问题。
  • 你还没有编辑过这个...
  • @Flexo♦ 已编辑..请帮助如何摆脱禁令..

标签: yii yii2 yii-extensions yii2-advanced-app yii2-basic-app


【解决方案1】:

您的视图希望您在控制器操作中传递 dataProvider 变量。

因此,请确保您的控制器操作中有类似的内容:

return $this->render('index', [
    'dataProvider' => $dataProvider,
]);

【讨论】:

  • 我在我的控制器代码中也这样做了,但仍然显示“未定义的变量:dataProvider”
  • @vijaynathji 那你一定要向我们展示你的控制器的动作
  • 您在哪个 url 收到此错误?您确定您正在编辑正确的控制器/视图文件吗?
【解决方案2】:

在您的控制器中,您必须将必须出现在视图中的所有变量传递给您在控制器末尾调用的渲染方法:

return $this->render('viewName', [
    'dataProvider' => $dataProvider,
    // ... Other fields
]);

或者你可以像这样拨打compact():

return $this->render('viewName', compact('dataProvider'));

另见:Yii2 actions

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多