Какие данные должны быть отнесены к датапровайдеру?
В моем контроллере:
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', //....
И тогда я получил идеальную сетку:
Контроллер – 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 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' ] );
в официальных документах http://www.yiiframework.com/doc-2.0/yii-widgets-listview.html# $ itemView-detail
$ itemView public property
Имя представления для рендеринга каждого элемента данных или обратный вызов (например, анонимная функция) для рендеринга каждого элемента данных. Если он задает имя вида, в представлении будут доступны следующие переменные:
$ модель: смешанная модель данных
$ key: mixed, ключевое значение, связанное с элементом данных
$ index: integer, нулевой индекс элемента данных в массиве items, возвращаемом $ dataProvider.
$ widget: ListView, этот экземпляр виджета
Поэтому ваши данные модели пользователя должны быть доступны в _single.php как $ model-> имя пользователя
Поэтому я могу использовать Detail View в _single.php, я думаю:
DetailView::widget([ 'model' => $model, 'attributes' => [ 'id', 'username', 'email:email', //....