[英]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.