簡體   English   中英

Yii2 ListView中的第一項和最后一項

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

您應該嘗試:

$models = $dataProvider->getModels();
$first = reset($models);
$last = end($models);

閱讀有關resetend更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM