【问题标题】:Yii2 ListView and dataproviderYii2 ListView 和数据提供者
【发布时间】:2014-10-15 12:03:03
【问题描述】:

哪些数据必须发送给数据提供者?

在我的控制器中:

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`s:

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

'itemView' => '_single',

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

我的意思是 - 需要在 GridView 中查看列表项的默认模板:

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

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

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

【问题讨论】:

    标签: php listview yii2


    【解决方案1】:

    控制器 - 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,
        ]);
    ?>
    

    查看(一)-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
    

    【讨论】:

      【解决方案2】:

      how send data to _single.php ? 这是如何使用$viewParams

      $viewParams 公共属性数组 $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'
      ] );
      

      【讨论】:

        【解决方案3】:

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

        $itemView 公共属性

        用于渲染每个数据项的视图名称,或用于渲染的回调(例如匿名函数) 每个数据项。如果它指定一个视图名称,以下变量 将在视图中可用:

        $model:混合,数据模型

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

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

        $widget: ListView,这个小部件实例

        所以你的用户模型数据应该在 _single.php 中作为 $model->username

        可用

        【讨论】:

        • 好的,为获取列表项设置任何默认模板吗?没有自格式化?我的意思是 - 我将 ['model'=>$model,] 发送到 _single.php 然后我必须像 foreach 方法一样格式化它?
        • 是的,单项的 _single.php 内容模板
        【解决方案4】:

        所以我想可以在 _single.php 中使用详细视图:

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

        【讨论】:

          猜你喜欢
          • 2014-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多