2014-10-15 3 views
5

Какие данные должны быть отнесены к датапровайдеру?Yii2 ListView and 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`s:

enter image description here

И если i`m установлен единый вид:

'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

ответ

12

Controller - 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, 
    ]); 
?> 

View (1) - index.php

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

View (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

в официальной документации http://www.yiiframework.com/doc-2.0/yii-widgets-listview.html# $ itemView-деталь

$ itemView publi c свойство

Название представления для визуализации каждого элемента данных или обратного вызова (например, анонимная функция) для визуализации каждого элемента данных. Если он задает имя представления, следующие переменные будут доступны в виде:

$ Модель: смешанная модель данных

$ ключ: смешанный, ключевое значение, связанное с данными item

$ index: integer, индекс на основе нуля элемента данных в массиве элементов, возвращаемый $ dataProvider.

$ штучка: ListView, этот виджет экземпляр

Так что ваши данные пользователя модели должны быть доступны в _single.php, как $ модели-> имя пользователя

+0

Ok, IsSet шаблона по умолчанию для любого списка прибудет пункты? без самостоятельного форматирования? Я имею в виду - я посылаю ['model' => $ model,] в _single.php, и тогда я должен отформатировать это как подход foreach? – WebArtisan

+0

Yup, _single.php шаблон содержимого для отдельного элемента – user1852788

0

Так я полагаю, можно использовать Подробности Просмотр в _single.php я думаю:

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

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' 
]); 
Смежные вопросы