如何使用 ActiveDataprovider 在 Yii2 GridView 中显示数组数据?
How to display array data in Yii2 GridView using ActiveDataprovider?
在我的数据库中,
"email" : [
"amnop@mailinator.com",
"abc@mail.com"
],
当我print_r($model->email)
,
它显示
Array ( [0] => amnop@mailinator.com [1] => abc@mail.com )
在我的 GridView 中,
<?= GridView::widget([
'dataProvider' => $dataProvider,
----
'columns' => [
-----
'price',
[
'attribute' => 'email',
'value' => function($model) {
//I need help here... I prefer any foreach function
}
],
-----
]
?>
我必须在同一列中显示所有电子邮件。如何做到这一点?
编辑
我使用 ActiveDataprovider
因为我从我的数据库中获取值。
假设你有一个数组
$data = [
['email' => 'amnop@mailinator.com'],
['email' => 'abc@mail.com'],
...
['email' => 'youremail100@mail.com'],
];
您可以使用 ArrayDataProvider
$provider = new ArrayDataProvider([
'allModels' => $data,
'pagination' => [
'pageSize' => 10,
],
'sort' => [
'attributes' => [ 'email'],
],
]);
像往常一样将数据提供者发送到
所以在 gridview 中你可以使用 ,
<?= GridView::widget([
'dataProvider' => $dataProvider,
----
'columns' => [
-----
'price',
[
'attribute' => 'email',
'value' => function($model) {
//I need help here...
}
],
-----
]
?>
你可以看看yii2指南https://www.yiiframework.com/doc/guide/2.0/en/output-data-providers
和文档 https://www.yiiframework.com/doc/api/2.0/yii-data-arraydataprovider
根据您想要实现的目标,您可以直接内爆电子邮件数组:
[
'attribute' => 'email',
'value' => function($model) {
if (is_array($model->email)) {
return implode(', ', $model->email);
}
return $model->email;
}
],
在我的数据库中,
"email" : [
"amnop@mailinator.com",
"abc@mail.com"
],
当我print_r($model->email)
,
它显示
Array ( [0] => amnop@mailinator.com [1] => abc@mail.com )
在我的 GridView 中,
<?= GridView::widget([
'dataProvider' => $dataProvider,
----
'columns' => [
-----
'price',
[
'attribute' => 'email',
'value' => function($model) {
//I need help here... I prefer any foreach function
}
],
-----
]
?>
我必须在同一列中显示所有电子邮件。如何做到这一点?
编辑
我使用 ActiveDataprovider
因为我从我的数据库中获取值。
假设你有一个数组
$data = [
['email' => 'amnop@mailinator.com'],
['email' => 'abc@mail.com'],
...
['email' => 'youremail100@mail.com'],
];
您可以使用 ArrayDataProvider
$provider = new ArrayDataProvider([
'allModels' => $data,
'pagination' => [
'pageSize' => 10,
],
'sort' => [
'attributes' => [ 'email'],
],
]);
像往常一样将数据提供者发送到
所以在 gridview 中你可以使用 ,
<?= GridView::widget([
'dataProvider' => $dataProvider,
----
'columns' => [
-----
'price',
[
'attribute' => 'email',
'value' => function($model) {
//I need help here...
}
],
-----
]
?>
你可以看看yii2指南https://www.yiiframework.com/doc/guide/2.0/en/output-data-providers 和文档 https://www.yiiframework.com/doc/api/2.0/yii-data-arraydataprovider
根据您想要实现的目标,您可以直接内爆电子邮件数组:
[
'attribute' => 'email',
'value' => function($model) {
if (is_array($model->email)) {
return implode(', ', $model->email);
}
return $model->email;
}
],