Yii2:将索引页面传递给视图中的面包屑和更新操作
Yii2: Passing index page to breadcrumbs in view and update actions
1) 使用默认的 LinkPager 设置在索引 (GridView) 中有几页结果。
2) 在 ActionColumn 中调用更新或查看操作。
3) 做任何事情,然后单击面包屑导航 return 到您来自的 GridView 中的同一页面,但事实并非如此:您回到了第 1 页,这在某些用例中可能会非常烦人(当然可以简单粗暴地返回浏览器,但是...)。
因此,在制定出某种基于 $_GET 的不雅解决方案之前,有人知道这方面的任何 LinkPager(或相关)分页魔法吗?
提前致谢
我认为这对你有用:
$this->params['breadcrumbs'][] = ['label' => 'YourLabel', 'url' => ['index']];
$this->params['breadcrumbs'][] = ['label' => Yii::$app->request->get('page'), 'url' => ['index', 'page' => Yii::$app->request->get('page')]];
现在似乎没有 LinkPager 魔术可以做到这一点,但我设法找到了避免控制器调整的解决方案。只需编辑 view.php/update.php
并在面包屑之前添加:
parse_str(parse_url(Yii::$app->request->referrer, PHP_URL_QUERY), $params);
然后在面包屑中:
$this->params['breadcrumbs'][] = ['label' => 'myLabel', 'url' => ['index', 'page' => isset($params['page']) ? $params['page'] : '']];
现在每次我们点击 myLabel
面包屑时,我们都会被发送到我们来自的 GridView 中的正确页面。
主要缺点是第二步之后没有页面跟踪,所以如果您这样做:index --> view/update/create --> !index
,页面跟踪将会丢失,因此最好使用如下会话变量:
public function actionIndex()
{
$searchModel = new BibliografiaSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
Yii::$app->session['myPage'] = Yii::$app->request->get('page');
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
然后在面包屑中:
$this->params['breadcrumbs'][] = ['label' => 'myLabel', 'url' => ['index', 'page' => Yii::$app->session['myPage']]];
这样页码会随时保留;
1) 使用默认的 LinkPager 设置在索引 (GridView) 中有几页结果。 2) 在 ActionColumn 中调用更新或查看操作。 3) 做任何事情,然后单击面包屑导航 return 到您来自的 GridView 中的同一页面,但事实并非如此:您回到了第 1 页,这在某些用例中可能会非常烦人(当然可以简单粗暴地返回浏览器,但是...)。
因此,在制定出某种基于 $_GET 的不雅解决方案之前,有人知道这方面的任何 LinkPager(或相关)分页魔法吗?
提前致谢
我认为这对你有用:
$this->params['breadcrumbs'][] = ['label' => 'YourLabel', 'url' => ['index']];
$this->params['breadcrumbs'][] = ['label' => Yii::$app->request->get('page'), 'url' => ['index', 'page' => Yii::$app->request->get('page')]];
现在似乎没有 LinkPager 魔术可以做到这一点,但我设法找到了避免控制器调整的解决方案。只需编辑 view.php/update.php
并在面包屑之前添加:
parse_str(parse_url(Yii::$app->request->referrer, PHP_URL_QUERY), $params);
然后在面包屑中:
$this->params['breadcrumbs'][] = ['label' => 'myLabel', 'url' => ['index', 'page' => isset($params['page']) ? $params['page'] : '']];
现在每次我们点击 myLabel
面包屑时,我们都会被发送到我们来自的 GridView 中的正确页面。
主要缺点是第二步之后没有页面跟踪,所以如果您这样做:index --> view/update/create --> !index
,页面跟踪将会丢失,因此最好使用如下会话变量:
public function actionIndex()
{
$searchModel = new BibliografiaSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
Yii::$app->session['myPage'] = Yii::$app->request->get('page');
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
然后在面包屑中:
$this->params['breadcrumbs'][] = ['label' => 'myLabel', 'url' => ['index', 'page' => Yii::$app->session['myPage']]];
这样页码会随时保留;