Reputation: 491
I have query like this in my controller
$dataPendaftar = Pendaftar::find()
->select(['pendaftar.*','user.*'])
->from('pendaftar')
-> leftJoin('user', 'user.id=pendaftar.id_user_pendaftar')
->asArray()
->all();
return $this->render('index', [
'dataPendaftar' => $dataPendaftar,
]);
and in my view, i try to use kartik yii2-export widget, like this
$gridColumns= [
'nik_pendaftar',
'tanggal_lahir',
'email',
];
echo ExportMenu::widget([
'dataProvider' => $dataPendaftar,
'columns' => $gridColumns,
'fontAwesome' => true,
]);
but i got error
Call to a member function getModels() on array
is it possible to use kartik yii2-export widget with model in array instead dataProvider?
Upvotes: 0
Views: 401
Reputation: 22174
ExportMenu:$dataProvider
needs to be instance of DataProviderInterface
, but you're passing array of models (this is what all()
returns). Try this:
$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,
]);
Or if you really want to use result of your query, then use 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,
]),
]);
Upvotes: 1