Какие данные должны быть отправлены поставщику данных?
В моем контроллере:
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',
//....
И тогда я получил идеальную сетку:
Контроллер — 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-деталь
$ itemView публичная собственность
Имя представления для рендеринга каждого элемента данных или обратный вызов (например, анонимная функция) для рендеринга
каждый элемент данных. Если это указывает имя представления, следующие переменные
будет доступно в виде:$ Модель: смешанная модель данных
$ Ключ: смешанный, значение ключа, связанное с элементом данных
$ Индекс: целое число, начинающийся с нуля индекс элемента данных в массиве элементов, возвращаемый $ dataProvider.
$ Штучка: ListView, этот экземпляр виджета
Таким образом, ваши данные модели пользователя должны быть доступны в _single.php как $ Модели-> имя пользователя
Так что я полагаю, можно использовать детальный вид в _single.php, я думаю:
DetailView::widget([
'model' => $model,
'attributes' => [
'id',
'username',
'email:email',
//....