使用Silex将POST请求转发到其他URL?

时间:2013-12-06 10:29:34

标签: php silex

我有一个包含一些输入字段的搜索表单。表单位于/search/,并通过POST传输。 如果表单被触发,我想将用户转发到/search/{one_parameter_from_form}。应对参数进行编码和清理,以便在网址中使用。

我尝试了以下内容:

$app->post('/search', 
    function (Request $request) use($app)
    {
        return $app->redirect('/search/' . str_replace(' ', '-', $request->get('q')));
    });

但是我必须自己“清理”请求参数,并且我无法访问重定向控制器中的所有其他请求参数。

1)如何访问转发中的所有POST参数?

2)我如何获得干净的请求 - 网址?

2 个答案:

答案 0 :(得分:1)

我是Symfony用户,但看起来好像你可以创建一个子请求并执行它就好像它是一个前锋。

Cookbook entry

段:

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\HttpKernelInterface;

$subRequest = Request::create('/');
$response = $app->handle($subRequest, HttpKernelInterface::SUB_REQUEST, false);

答案 1 :(得分:0)

您可以使用$app->redirect('/', 303);。状态代码303使浏览器尝试使用GET进行重定向URL而不是POST。