Symfony 4简化控制器中的条件代码?

Symfony 4简化控制器中的条件代码?,symfony,Symfony,对优化这些表达式有什么建议吗?你可以做一个方法 public function edit(User $user) { if (false === $this->isGranted('USER_EDIT_PROFILE', $user)) { $this->get('session')->getFlashBag()->add('error', 'Message'); return $this->redirect($this-&g

对优化这些表达式有什么建议吗?你可以做一个方法

public function edit(User $user)
{
    if (false === $this->isGranted('USER_EDIT_PROFILE', $user)) {
        $this->get('session')->getFlashBag()->add('error', 'Message');
        return $this->redirect($this->get('request_stack')->getCurrentRequest()->headers->get('referer'));
    }

    return $this->render('admin/user/edit.html.twig', [
        'user' => $user,
    ]);
}
但是,它仍然需要比以前更多的代码

    if (false === $this->isGranted('USER_EDIT_PROFILE', $user)) {
        return $this->denyAccessRedirect('Message');
    }

问题是控制器必须返回响应。调用该方法时不返回

您稍有错误,一个方法不必返回响应,它也可以抛出异常,请参阅此标准控制器方法,它可能会有很大帮助;o) 。。。另外:重申一下:异常然后由异常控制器处理,该控制器生成某种或多或少有用的错误消息,并重定向到登录页面afaik。当然,您可以实现自己的控制器来处理这些问题;o) 我已经读过了。Denyaccessunlessgrated重定向到app_登录,然后重定向到app_home登录。我不需要它。但我不明白如何创建我的简单异常。异常主要作为系统文本抛出,而不是重定向到所需的路由。您可以抛出自定义异常,并在特殊的内核请求处理程序中捕获它,以便在同一页面上显示它。虽然现在还不清楚,但从技术上讲,这是如何起作用的。。。或者你可以将函数内容包装在一个try-catch块中,然后就在那里执行……如果没有referer呢?
$this->denyAccessRedirect('Message');