Gridview Yii2:将索引页传递给视图中的面包屑并更新操作

Gridview Yii2:将索引页传递给视图中的面包屑并更新操作,gridview,yii2,breadcrumbs,yii2-advanced-app,Gridview,Yii2,Breadcrumbs,Yii2 Advanced App,1在index GridView中有多页结果,带有默认的LinkPager设置。 2在ActionColumn中调用更新或查看操作。 3做任何事情,然后单击面包屑返回到您来自GridView的同一页面,但事实并非如此:您回到了第1页,在某些用例中,这可能非常烦人,当然,您可以简单而不愉快地返回到浏览器中,但是 所以,在制定某种不合法的基于$的解决方案之前,有人知道这方面有什么链接寻呼机或相关的分页魔法吗 提前感谢我想这可能对您有用: $this->params['breadcrumbs']

1在index GridView中有多页结果,带有默认的LinkPager设置。 2在ActionColumn中调用更新或查看操作。 3做任何事情,然后单击面包屑返回到您来自GridView的同一页面,但事实并非如此:您回到了第1页,在某些用例中,这可能非常烦人,当然,您可以简单而不愉快地返回到浏览器中,但是

所以,在制定某种不合法的基于$的解决方案之前,有人知道这方面有什么链接寻呼机或相关的分页魔法吗


提前感谢

我想这可能对您有用:

$this->params['breadcrumbs'][] = ['label' => 'YourLabel', 'url' => ['index']];
$this->params['breadcrumbs'][] = ['label' =>  Yii::$app->request->get('page'), 'url' => ['index', 'page' => Yii::$app->request->get('page')]];

现在似乎还没有链接寻呼机的魔力可以做到这一点,但我设法找到了一个避免控制器调整的解决方案。只需编辑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'] : '']];
$this->params['breadcrumbs'][] = ['label' => 'myLabel', 'url' => ['index', 'page' => Yii::$app->session['myPage']]];
现在,每次单击myLabel面包屑,我们都会被发送到GridView中的相应页面

主要的缺点是在第二步之后没有页面跟踪,所以如果您这样做:index->view/update/create->!索引,页面跟踪将丢失,因此最好使用会话变量,如下所示:

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' => isset($params['page']) ? $params['page'] : '']];
$this->params['breadcrumbs'][] = ['label' => 'myLabel', 'url' => ['index', 'page' => Yii::$app->session['myPage']]];

这样,页码将随时保留

谢谢,不过Yii::$app->request->get'page'很有用,但它不能解决将此值放入视图/更新中的问题,因为它在视图/更新中不可用。如果有用,请重新设置它以进行更新,您需要管理页面值并将其传递给控制器,以便在更新视图中呈现。我不是在搜索$\u get或派生方法通过controller/view进行操作,我知道这是一种通过controller/view获得此类参数的方法。类似于params.php的使用,它是只读的。我知道有一个Yii::$app->view->params['myParam'],但我仍在努力找出它是否适合这种情况。为什么不在视图中使用$this->params['myParam']