【问题标题】:How to use kartik yii2-export with model in array type如何将kartik yii2-export与数组类型的模型一起使用
【发布时间】:2018-05-31 01:29:15
【问题描述】:

我的控制器中有这样的查询

$dataPendaftar = Pendaftar::find()
            ->select(['pendaftar.*','user.*'])
            ->from('pendaftar') 
            -> leftJoin('user', 'user.id=pendaftar.id_user_pendaftar')
            ->asArray()
            ->all();

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

在我看来,我尝试使用 kartik yii2-export 小部件,像这样

$gridColumns= [
        'nik_pendaftar',
        'tanggal_lahir',
        'email',


    ];
    echo ExportMenu::widget([
        'dataProvider' => $dataPendaftar,
        'columns' => $gridColumns,
        'fontAwesome' => true,
    ]);

但我有错误

调用数组上的成员函数 getModels()

是否可以使用 kartik yii2-export 小部件和数组中的模型而不是 dataProvider?

【问题讨论】:

    标签: yii2


    【解决方案1】:

    ExportMenu:$dataProvider 需要是DataProviderInterface 的实例,但您传递的是模型数组(这是all() 返回的内容)。试试这个:

    $dataPendaftar = new ActiveDataProvider([
        'query' => Pendaftar::find()
            ->select(['pendaftar.*','user.*'])
            ->from('pendaftar')
            ->leftJoin('user', 'user.id=pendaftar.id_user_pendaftar')
    ]);
    
    return $this->render('index', [
        'dataPendaftar' =>  $dataPendaftar,
    ]);
    

    或者如果您真的想使用查询结果,请使用ArrayDataProvider:

    $dataPendaftar = Pendaftar::find()
            ->select(['pendaftar.*','user.*'])
            ->from('pendaftar') 
            ->leftJoin('user', 'user.id=pendaftar.id_user_pendaftar')
            ->asArray()
            ->all();
    
    return $this->render('index', [
        'dataPendaftar' => new ArrayDataPrivider([
            'allModels' => $dataPendaftar,
        ]),
    ]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 2017-06-12
      • 2014-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多