0

我正在尝试创建一个处理特定操作确认的特殊路线。例如,如果我尝试访问一条路线/admin/user/1/delete,我想先转到另一条路线以显示一个特殊的 html 页面,确认他们想要完成一项操作(即确认/管理员/用户/1/删除)和在页面上有一个前往路线的确认按钮和一个重定向到引荐来源网址的返回按钮。

在下面的示例中,有没有办法让 {route} 成为任何东西并将其传递到树枝页面?

/**
* @Route("/confirm/{route}", name="confirm_dialog")
* @param type $route
*/
public function confirmAction($route)
{
}
4

1 回答 1

0

有一本涵盖此特定用例的食谱: http: //symfony.com/doc/current/cookbook/routing/slash_in_parameter.html

默认情况下,Symfony 路由组件要求参数匹配以下正则表达式路径:“[^/]+”。这意味着允许除“/”之外的所有字符。
您必须通过指定更宽松的正则表达式路径来明确允许“/”成为参数的一部分:“.+”

/**
* @Route("/confirm/{route}", name="confirm_dialog", requirements={"route"=".+"})
* @param type $route
*/
public function confirmAction($route)
{
    // ...
}

但我不推荐您尝试使用的模式。我建议使用相同的路由“ /admin/user/1/delete ”,使用GET显示确认表单并使用POST执行删除。如果您不想重复要求确认的代码,您可以随时提取该特定代码。

于 2015-06-10T08:09:29.537 回答