如何在数组类型中使用kartik yii2-export与模型

时间:2018-05-31 01:29:16

标签: yii2

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

$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?

1 个答案:

答案 0 :(得分: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,
    ]),
]);