2015-02-04 89 views
1

尝试构建一个控制器方法,可以重定向并发送请求数据。控制器/路由重定向似乎没有任何东西可以实现这一点。锂重定向发送请求数据

This question gave a new approach但我无法弄清楚如何重定向到指定的页面,而不是在当前渲染。

$forward = Libraries::instance("controllers", "Main", [ 
    'request' => $this->request 
]); 
return $forward($this->request, ['action' => 'view']); 

The route tests似乎没有任何提供任何见解,我该怎么去实现URL重定向,同时仍保留要求的数据?

+0

当你说重定向...你的意思是一个实际的浏览器重定向,你想保留查询字符串上的数据?例如,请求会进入http://example.com/some/url?a=1&b=2,并且您希望将其重定向到http://example.com/another/url?a=1&b=2? – rmarscher

+0

浏览器重定向,但我想保留'$ this-> request-> data'和'request-> query'。所以转发当前的请求数据到另一页 – Bankzilla

+1

是的,这是为了做一个内部重定向。 HTTP规范没有提供使用POST数据重定向的机制(因此,POST-Redirect-GET模式)。但是,如果目标页面不需要相同的请求上下文以正确呈现,则仍然可以执行'$ forward()'调用和_then_'返回$ this-> redirect(...)'。 –

回答

0

从控制器内:

$this->redirect(['AnotherController::anotherAction', '?' => $this->request->query], ['exit' => true]); 

$this->request->data不能被转发。浏览器位置重定向只能指定查询字符串。您可以使用包含输入html元素中的数据的表单来呈现页面,并在加载时提交表单。或者您可以将数据存储在会话或某个服务器端,并在下一个请求中检索它。

+0

Dam我希望避免创建Feed并提交 – Bankzilla

+0

结束时使用会话保存请求数据的重定向。 – Bankzilla