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

How to know who called an action of controller in symfony

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

这是我想做的事的例子

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');
        }

    }

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

您的操作需要具有请求参数:

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

然后从请求对象中获取referer:

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

编辑:
获取路由对象:

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

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

use Symfony\Component\HttpFoundation\RedirectResponse;

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

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

默认路由可选