加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

CakePHP 2.4重定向()与POST数据?

发布时间:2020-12-13 17:52:21 所属栏目:PHP教程 来源:网络整理
导读:我希望通过控制器方法将用户发送到另一个页面.另一页需要POST数据. 通常,使用postLink()访问页面.有没有办法在控制器中使用它,也许使用redirect()? 有点旧,但仍然没有接受答案…… 答案是否定的,是的. 不,没有直接方法,因为您无法使用redirect()函数传递POS
我希望通过控制器方法将用户发送到另一个页面.另一页需要POST数据.

通常,使用postLink()访问页面.有没有办法在控制器中使用它,也许使用redirect()?

有点旧,但仍然没有接受答案……
答案是否定的,是的.

>不,没有直接方法,因为您无法使用redirect()函数传递POSTed数据.
您可以使用requestAction(),因为您可以传递数据(see requestAction() here for version cakePHP>=2.0).
在这种情况下,您传递一个url,然后传递一个包含关键数据和发布数据的数组,例如
$this-> requestAction($url,array(‘data’=> $this-> data));或者如果您更喜欢$this-> requestAction($url,array(‘data’=> $)这 – >请求 – >数据));
requestAction()的问题在于,结果是环境的,就好像你在当前控制器中而不是在目标中生成所请求操作的页面一样,导致效果不是非常令人满意(至少对我来说,组件表现不是很好)很好),所以,不,不.
> …但是,您可以使用Session组件执行非常类似的操作.
这就是我通常这样做的方式.流程将是这样的:
在A控制器中查看A =>通过postLink()到Action操作=> =>控制器请求 – >数据到会话变量=> => B控制器中的操作通过redirect()=> =>设置B控制器请求 – >来自会话变量的数据=> => B控制器动作中的过程数据=>查看B.

所以,在你的A控制器中,让我们说在sentToNewPage()动作你会有类似的东西

//Action in A controller
public function sentToNewPage()
{
 $this->Session->write('previousPageInfo',$this->request->data);
 $url = array('plugin' => 'your_plugin','controller'=>'B','action'=>'processFromPreviousPage');
 $this->redirect($url);
}

在B控制器中:

//Action in B controller
public function beforeFilter()
{//not completelly necessary but handy. You can recover directly the data
 //from session in the action 
 if($this->Session->check('previousPageInfo'))
   {$this->data = $this->Session->read('previousPageInfo')};
 parent::beforeFilter();
}
public function processFromPreviousPage()
{
 //do what ever you want to do. Data will be in $this->data or
 // if you like it better in $this->request->data
 $this->processUserData($this->request->data);
  //...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读