簡體   English   中英

Yii2 ListView和dataprovider

[英]Yii2 ListView and dataprovider

必須向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:

在此輸入圖像描述

如果我設置單一視圖,如:

'itemView' => '_single',

如何將數據發送到_single.php?

我的意思是 - 需要像GridView中的視圖列表項的默認模板:

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

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

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

在此輸入圖像描述

控制器 - 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

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'
] );

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

$ itemView公共屬性

用於呈現每個數據項的視圖的名稱,或用於呈現每個數據項的回調(例如,匿名函數)。 如果它指定了視圖名稱,則視圖中將提供以下變量:

$ model: mixed,數據模型

$ key: mixed,與數據項關聯的鍵值

$ index: integer,$ dataProvider返回的items數組中數據項的從零開始的索引。

$ widget: ListView,這個小部件實例

因此,您的用戶模型數據應該在_single.php中以$ model-> username的形式提供

所以我想可以在_single.php中使用Detail View我認為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM