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

前端之家收集整理的这篇文章主要介绍了CakePHP 2.4重定向()与POST数据?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望通过控制器方法用户发送到另一个页面.另一页需要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()动作你会有类似的东西

  1. //Action in A controller
  2. public function sentToNewPage()
  3. {
  4. $this->Session->write('prevIoUsPageInfo',$this->request->data);
  5. $url = array('plugin' => 'your_plugin','controller'=>'B','action'=>'processFromPrevIoUsPage');
  6. $this->redirect($url);
  7. }

在B控制器中:

  1. //Action in B controller
  2. public function beforeFilter()
  3. {//not completelly necessary but handy. You can recover directly the data
  4. //from session in the action
  5. if($this->Session->check('prevIoUsPageInfo'))
  6. {$this->data = $this->Session->read('prevIoUsPageInfo')};
  7. parent::beforeFilter();
  8. }
  9. public function processFromPrevIoUsPage()
  10. {
  11. //do what ever you want to do. Data will be in $this->data or
  12. // if you like it better in $this->request->data
  13. $this->processUserData($this->request->data);
  14. //...
  15. }

猜你在找的PHP相关文章