【问题标题】:Yii Property "CListView.X" is not definedYii 属性“CListView.X”未定义
【发布时间】:2013-08-08 12:13:19
【问题描述】:

我是 Yii 的新手,试图在主页上显示用户列表,但这样做时出现错误:未定义属性“CListView.userlist”。代码: 站点控制器.php

class SiteController extends Controller {
    // This is the function which I changed reset is file remains same
    public function actionIndex() {
        $userlist = User::model()->findAllBySql($sql);
        $this->render('index',array('userlist'=>$userlist,));
    }
}

网站视图代码,index.php:

$this->widget('zii.widgets.CListView', array(
    'userlist'=>$userlist,
    'itemView'=>'_view',
    ));

在最后一个_view.php:

echo CHtml::encode($data->getAttributeLabel('id'));

目前在使用代码时出现错误:未定义属性“CListView.userlist”。但是如果我用 $dataProvider 替换 $userlist,错误会变为“致命错误:在线调用 C:\devCenter\yii\framework\zii\widgets\CBaseListView.php 中非对象上的成员函数 getData() 107"

我有两个问题:

  1. $dataProvider 好像有特殊含义,请告诉我这是为什么。
  2. 我将 $userlist 从 SiteController 传递给 index.php,然后传递给 $this->widget(),但在 _view.php 中变量更改为 $data,我缺少什么? 我已经阅读了 Yii 网站上的文档,但我无法理解。

【问题讨论】:

    标签: php yii


    【解决方案1】:

    您在 ClistView 的语法中犯了错误,它代替了您插入用户列表的 dataprovider,因此您收到错误 undefined userlist

    这是你的语法

    $this->widget('zii.widgets.CListView', array(
        'userlist'=>$userlist,
        'itemView'=>'_view',
        ));
    

    正确的语法如图所示

    $this->widget('zii.widgets.CListView', array(
        'dataprovider'=>$userlist,
        'itemView'=>'_view',
        ));
    

    并且$userlist 必须是有效的数据提供者才能按照 Daniel Vaquero 提供的步骤正确定义它

    【讨论】:

      【解决方案2】:

      在站点控制器中: actionIndex() 函数,'$sql' 未定义...

      已编辑:

      对于 CListView Widget,您需要将 '$userlist' 转换为 'CActiveDataProvider',如下所示:

      $userlist = User::model()->findAllBySql($sql);
      $userListDP = new CActiveDataProvider($userlist);
      $this->render('index',array('userListDP'=>$userListDP));
      

      在视图文件中: CListView Widget 需要一个 dataProvider。

      $this->widget('zii.widgets.CListView', array(
          'dataProvider'=>$userListDP, // CListView collect the data from 'dataProvider' param name.
          'itemView'=>'_view',
          ));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-20
        • 1970-01-01
        相关资源
        最近更新 更多