Yii2 ListView和dataprovider

时间:2014-10-15 12:03:04

标签: php listview yii2

必须向dataprovider发送哪些数据?

在我的控制器中:

public function actionIndex() {
    $searchModel  = new UserSearch();
    $dataProvider = $searchModel->search( Yii::$app->request->queryParams );
//other stuff and sending array of params to view

在视图中:

echo ListView::widget( [
    'dataProvider' => $dataProvider,
] );

但我只得到了id:

enter image description here

如果我设置单一视图,如:

'itemView' => '_single',

如何将数据发送到_single.php?

我的意思是 - 需要像GridView中的视图列表项的默认模板:

GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],

        'id',
        'username',
        'email:email',
        'password',
        'role',
//....

然后我得到了完美的网格:

enter image description here

4 个答案:

答案 0 :(得分:14)

控制器 - SiteController.php

<?php

// Yii2 Listview Example : by Songwut Kanchanakosai, Thailand.

use common\models\Members;
use common\models\SearchMembers;
...

public function actionIndex() {
    $searchModel = new SearchMembers();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
    ]);
?>

查看(1) - index.php

<?php
use yii\widgets\ListView;
...
echo ListView::widget( [
    'dataProvider' => $dataProvider,
    'itemView' => '_item',
] ); ?>

查看(2) - _item.php

<?php
use yii\helpers\Html;
?>  

<?=$model->name;?> 
<?=$model->age;?> 
<?=$model->mobile;?>

示例结果:

Songwut 36 +668-3949-5153
Prawee  41 +668-7323-2334
Kosol   32 +668-8014-0165
Utehn   39 +668-7874-5643

答案 1 :(得分:3)

how send data to _single.php ? 以下是使用$viewParams

的方法
  

$ viewParams public property array $ viewParams = []

     

正在传递给$ itemView的其他参数   渲染。仅当$ itemView是字符串时才使用此属性   表示视图名称。

echo ListView::widget( [
    'dataProvider' => $dataProvider,
    'viewParams'=>['name'=>'My Name is Stefano'], //acccessed in view as $name with value 'My Name is Stefano'
] );

答案 2 :(得分:2)

在官方文档http://www.yiiframework.com/doc-2.0/yii-widgets-listview.html# $ itemView-detail

  

$ itemView公共属性

     

用于呈现每个数据项的视图的名称,或用于呈现的回调(例如,匿名函数)   每个数据项。如果它指定了视图名称,则以下变量   将在视图中提供:

     

$ model:混合,数据模型

     

$ key:混合,与数据项关联的键值

     

$ index:整数,$ dataProvider返回的items数组中数据项的从零开始的索引。

     

$ widget: ListView,此小部件实例

因此,您的用户模型数据应在_single.php中以 $ model-&gt; username

的形式提供

答案 3 :(得分:0)

所以我想可以在_single.php中使用Detail View我认为:

DetailView::widget([
    'model' => $model,
    'attributes' => [
        'id',
        'username',
        'email:email',
//....