php - Undefined variable: dataProvider in yii2 kartik grid
问题描述
I'm trying to learn about kartik grid view and I'm having trouble with dataProvider.
Controller Code
this is the full controller code (not all though, i just show the code until code containing the dataProvider that i asked why it's undefined)
class SiteController extends Controller {
public function actions()
{
return [
'error' => [
'class' => 'yii\web\ErrorAction',
],
'captcha' => [
'class' => 'yii\captcha\CaptchaAction',
'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
],
];
}
public function actionIndex()
{
if (!Yii::$app->user->isGuest){
if (Yii::$app->user->identity->akses === '1'){
return $this->render('knpr/knpr-home');
} else if (Yii::$app->user->identity->akses === '2') {
return $this->render('prov/prov-home');
} else if (Yii::$app->user->identity->akses === '3') {
return $this->render('kabkot/kabkot-home');
} else if (Yii::$app->user->identity->akses === '4') {
return $this->render('multiregional/multiregional-home');
}
}
//return $this->render('home-knpr');
}
public function actionLogin()
{ $this->layout = 'main-login';
if (!Yii::$app->user->isGuest) {
return $this->goHome();
}
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login()) {
return $this->goBack();
}
return $this->render('login', [
'model' => $model,
]);
}
public function actionLogout()
{
Yii::$app->user->logout();
return $this->redirect(['site/login'])->send();
}
public function actionKnprHome()
{
$totalCount = Yii::$app->db->createCommand('SELECT COUNT(*) FROM m_admin') -> queryScalar();
$dataProvider = new SqlDataProvider([
'db' => Yii::$app->db,
'sql' => 'SELECT * FROM m_admin',
'totalCount' => $totalCount,
'sort' => false,
'pagination' => [
'pageSize' => $count,
],
]);
return $this->render('knpr/knpr-home', array('dataProvider' => $dataProvider));
}
View Code
<?php echo GridView::widget([
'dataProvider' => $dataProvider,
'showOnEmpty' => true,
'emptyCell' => true,
'column' => [
'username',
'password',
'akses',
'kode_daerah',
'authKey',
'id',
],
'pjax' => true,
]); ?>
and the output is :
Undefined variable: dataProvider
error : undefined var : dataProvider
Please suggest.
解决方案
问题解决了,我将第 65 行更改为 return $this->redirect(['site/knpr-home']);
并删除了视图站点中的所有列变量
<div>
<?php echo GridView::widget([
'dataProvider' => $dataProvider,
'showOnEmpty' => true,
'emptyCell' => true,
'pjax' => true,
]); ?> </div>
推荐阅读
- angular - 如何从另一个角度刷新组件?
- php - 没有 .png 的 ShareX 链接?
- javascript - 破表过滤器
- apache-spark - 执行程序内存:已用内存与用于存储数据的总可用内存,例如缓存在内存中的 RDD 分区
- php - 如何根据变量更改输入值?
- ios - 使用 SwiftUI 模拟 CSS flex-wrap 行为
- bash - Bash:在远程主机上作为 sudo 运行函数?
- load - Snowflake - 通过 Web UI 加载数据所需的权限
- postgresql - Postgres 更快地按计算字段排序
- docker - 从 Jenkins docker 容器 SSH 到远程主机