2018-11-14 14:04:01 1744次浏览 3条回答 0 悬赏 20 金钱

需求如下:假设当前是第N页,操作完这一页的某条记录后,再返回到第N页。
当前想法是:把 GridView 中 dataProvider 的 pagination 的 page 属性(表示当前页码),作为路由的参数,扔给控制器,操作完成,redirect 的时候加上 page 属性就行了。

那么怎么在 GridView 内部访问到这个 page 属性?
以下代码只能在 GridView 标签后运行才 TM 有效果

<?php
$page=$dataProvider->getPagination()->getPage();
VarDumper::dump($page);
?>

最佳答案

  • return19931112 发布于 2018-11-15 11:13 举报
    public function actionIndex()
    {
        $dataProvider = new ActiveDataProvider();
    
        // 记录当前路由
        Url::remember();
    
        return $this->render('index', compact('dataProvider'));
    }
    
    public function actionHandle()
    {
        // 业务代码
    
        // 返回上次的路由
        return $this->redirect(Url::previous());
    }
    

    这样应该也可以满足你的需求

    1 条回复
    回复于 2018-11-15 13:14 回复

    谢谢你的回答,应该就是你说得那样。
    我这就去恶补文档

  • 回答于 2018-11-14 14:40 举报

    不用获取 pagination 的 page 属性,直接取 page 参数就行啊

    1 条回复
    回复于 2018-11-14 20:58 回复

    怎么弄,来个思路。感觉Gridview从没考虑过这问题。
    以下是update按钮的function

    'update' => function ($url, $model, $key) {

        //控制器动作改成 actionList($page=1),再把$page的值render给视图????????
        //但是我匿名方法访问不了外部变量$page
    

  • 回答于 2018-11-15 07:07 举报

    你这实际上上向Gridview传参数的问题:

    $this->params["page"]=$page;
    ......
    'update' => function ($url, $model, $key) {
        $newpage=$this->params["page"]
    }
    
    1 条回复
    回复于 2018-11-15 13:18 回复

    感谢你的回答,让我了解了关于传参数的问题。
    其实我的思路是错的,而且太错了。
    楼下给出了更快更暴力的方法,就选他了

您需要登录后才可以回答。登录 | 立即注册
isenhart
见习主管

isenhart

注册时间:2018-06-20
最后登录:2019-04-30
在线时长:12小时8分
  • 粉丝0
  • 金钱160
  • 威望0
  • 积分280

热门问题