有点旧,但仍然没有接受答案……
答案是否定的,是的.
原文链接:https://www.f2er.com/php/133823.html答案是否定的,是的.
>不,没有直接方法,因为您无法使用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); //... }