yii2 框架 LinkPager 分页组件设置的分页,控制器中 get 不到 URL 中的当前页数

// 删除功能
public function actionDel() {
    $adminid = (int)Yii::$app->request->get('adminid');
    $page = (int)Yii::$app->request->get('page');

    if (empty($adminid)) {
        return $this->render('manage/managers');
    }

    $model = new Admin;

    if ($model->deleteAll('adminid = :id', [':id' => $adminid])) {
        Yii::$app->session->setFlash('info', '删除成功');
        $this->redirect(['manage/managers', 'page' => $page]);
    }
}

如上所示,我想在管理员列表页中删除一个用户并且留在当前列表页,但是这里 get 不到 URL
中的 page 参数。

对所有回答表示谢谢。

阅读 4.3k
3 个回答

如果用yii2自带的grid组件的话,删除都是自动组装为post传递的,而且默认也不会传递这些page信息过来,所以不管用什么方式都不会获取到的,所以需要你自己自定义删除按钮选项这些参数传递过去。


其实还有可以直接返回上一页:

 if ($model->deleteAll('adminid = :id', [':id' => $adminid])) {
        Yii::$app->session->setFlash('info', '删除成功');
        //$this->redirect(['manage/managers', 'page' => $page]);
         $this->redirect(Yii::$app->request->referrer);//直接返回上一页的地址就是
 }

或者使用pjax来实现无刷新加载,不过view和controller都需要修改下。

你发送的删除请求是get方式吗?如果你前端用的ajax的post方式,这边应该用Yii::$app->request->post('page'),如果你觉得参数有问题,可以使用var_dump(Yii::$app->request->bodyParams);查看下所有的参数有没有传过来

解决了,需要在删除的链接中把当前页的page参数也传过去,不只是传个id。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题