[英]Yii2 first and last items in the ListView
我在視圖中有一個典型的ListView小部件,如下所示:
public function actionView($id)
{
$model = $this->findModel($id);
$dataProvider = new \yii\data\ActiveDataProvider(['query' => \app\models\Verses::find()->where(['sura_id' =>$id])->with('sura')]);
return $this->render('view', [
'model' => $model,
'dataProvider' => $dataProvider,
]);
}
在視圖中,將顯示Verses
模型的列表,並且ListView的尋呼機也可用。
我想在頁面標題中添加一些細節。 這些詳細信息是來自列表中呈現的Verses
模型的第一條記錄和最后一條記錄的數據。
我嘗試使用min()
和max()
PHP函數來獲取視圖中的第一條記錄和最后一條記錄,如下所示:
$min = min($model->verses);
echo $min->verse_id;
但是,它返回最終的第一條記錄,而不涉及當前的尋呼機頁面。 換句話說,它不返回列表第一項的verse_id
值。
有什么方法可以獲取ListView的第一個,最后一個甚至第n個特定項目?
您可以訪問dataProvider的models數組,獲取第一個和最后一個
public function actionView($id)
{
$model = $this->findModel($id);
$dataProvider = new \yii\data\ActiveDataProvider(['query' => \app\models\Verses::find()->where(['sura_id' =>$id])->with('sura')]);
$first = $dataProvider['models'][0];
$last = $dataProvider['models'][$dataProvide['totalCount']-1];
或者你可以使用
$myModels = $dataProvider->gestModels();
$first = myModels[0];
$last = myModels[$dataProvide['totalCount']-1];
對於頁面,您可以使用count而不是total count
return $this->render('view', [
'model' => $model,
'dataProvider' => $dataProvider,
]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.