如何知道谁在symfony中调用了控制器的动作

时间:2015-04-22 14:02:23

标签: symfony routes request

我正在Symfony2项目中工作,我有一个控制器的动作,从2个不同的页面调用。我怎么知道哪个页面叫做我的动作,所以我可以根据发出请求的人返回不同的响应:

这是我想做的一个例子

public function deleteAction(File $file)
    {
        // i delete the file

        if (// request made from first page) {
            return $this->redirect($this->generateUrl('route_of_first_page');
        }
        elseif (// request made from second page) {
            return $this->redirect($this->generateUrl('route_of_second_page');
        }

    }

这样我就可以留在提出请求的页面中

2 个答案:

答案 0 :(得分:4)

您需要采取行动才能获得请求参数:

public function deleteAction(Request $request, File $file)

然后从请求对象获取引用:

$previousUrl = $request->headers->get('referer');

修改
获取路径对象:

$router = $this->get('router');
$route = $router->match($previousUrl);

答案 1 :(得分:0)

请确保在文件开头包含重定向

use Symfony\Component\HttpFoundation\RedirectResponse;

然后直接调用它的构造函数来重定向

return new RedirectResponse($request->server->get('HTTP_REFERER', $this->router->generate('default_route',array()) ));

默认路线是可选的