如何知道谁在 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()) ));
默认路由可选
我在 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()) ));
默认路由可选