我试图创建一个处理特定操作确认的特殊路线。例如,如果我试图访问路由/admin/user/1/delete
,我想首先转到不同的路线,以显示一个特殊的html页面,确认他们想要完成一个动作(即确认/管理员/用户/ 1 /删除)并在页面上有一个确认按钮进入路线,一个返回按钮重定向到推荐人。
在下面的示例中,有没有办法让{route}成为任何东西并将其传递到树枝页面?
/**
* @Route("/confirm/{route}", name="confirm_dialog")
* @param type $route
*/
public function confirmAction($route)
{
}
答案 0 :(得分:1)
有一本涵盖此特定用例的食谱: http://symfony.com/doc/current/cookbook/routing/slash_in_parameter.html
默认情况下,Symfony Routing组件要求参数与以下正则表达式路径匹配:" [^ /] +"。这意味着除了" /"之外,所有字符都被允许 您必须明确允许" /"通过指定更宽松的正则表达式路径成为参数的一部分:"。+"
/**
* @Route("/confirm/{route}", name="confirm_dialog", requirements={"route"=".+"})
* @param type $route
*/
public function confirmAction($route)
{
// ...
}
但我不推荐您尝试使用的模式。 我建议使用相同的路线" / admin / user / 1 / delete "使用 GET 显示确认表单并使用 POST 执行删除。 如果您不想重复询问确认的代码,您可以随时提取该特定代码。