Yii2 ListView и поставщик данных

Какие данные должны быть отправлены поставщику данных?

В моем контроллере:

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

но я получил только идентификаторы:

введите описание изображения здесь

И если я установлен один вид, как:

'itemView' => '_single',

как отправить данные в _single.php?

Я имею в виду — нужен шаблон по умолчанию для просмотра элементов списка, как в GridView:

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

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

И тогда я получил идеальную сетку:

введите описание изображения здесь

5

Решение

Контроллер — 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
14

Другие решения

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-деталь

$ itemView публичная собственность

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

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

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

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

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

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

2

Так что я полагаю, можно использовать детальный вид в _single.php, я думаю:

DetailView::widget([
'model' => $model,
'attributes' => [
'id',
'username',
'email:email',
//....
0
По вопросам рекламы [email protected]