我在视图中有一个典型的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项?
答案 0 :(得分:1)
您可以访问dataProvider的models数组a获取第一个和最后一个
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而不是总计数
return $this->render('view', [
'model' => $model,
'dataProvider' => $dataProvider,
]);
}
答案 1 :(得分:1)