有没有办法在 conf / routes 中包含表达式,所以我不必为这些简单的动作创建新的控制器?
GET /:id/:secret controllers.Default.redirect(to=id+"/edit?secret="+secret)
答案 0 :(得分:1)
不,但是你真的只需要一条路线和一条动作方法来完成你想要的东西。
<强> CONF /路由强>
GET /redirect/:id/:secret controllers.Default.redirect(id:String, secret:String)
<强> Default.java 强>
public static Result redirect(String id, String secret)
{
return redirect(id + "/edit?secret=" + secret);
}
答案 1 :(得分:1)
仔细查看documentation中的路线类型,最有可能的是你可以使用 动态部分跨越几个/.
举个例子,这个会将/redirect/
之后的所有内容作为单个字符串传递:
GET /redirect/*targetPath controllers.Application.redirectTo(targetPath:String)
因此,在请求http://localhost/redirect/new/location/123?secret=foo&something=bar
中,其值为:new/location/123?secret=foo&something=bar
您可以选择将secret
声明为路线参数,因为您可以使用ie。用于检查是否存在的bindFromRequest()
方法。 (因此可以与$_GET['secret']
PHP
进行比较