如何在 Play 中执行操作之前对请求 URL 进行 de-slugify!框架
我总是 slugyfing 我的链接,例如:
http://site.com/this%20is%20a%20link
变成:
http://site.com/this-is-a-link
我想在处理任何操作之前对请求 URL 进行 de-slugify,因此,例如,如果我配置了以下路由:
GET /{parameter} Controller.action
并且我调用像这样的 slugyfied 链接:
/this-is-a-link
参数
被处理为“这是一个链接”
而不是“this-is-a-link”
。
有什么建议吗?
编辑:也许必须在路由器实际路由请求之前完成值的替换。
I'm always slugyfing my links, so that for example:
http://site.com/this%20is%20a%20link
becomes:
http://site.com/this-is-a-link
I would like to de-slugify the request URL before any action is processed, so that for example if I have the following route configured:
GET /{parameter} Controller.action
And I invoke a slugyfied link like:
/this-is-a-link
The parameter
is processed as "this is a link"
instead of "this-is-a-link"
.
Any tips?
EDIT: Maybe the replacement of the values must be done before the Router
actually routes the request.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Slug 应该与它们指向的内容一起保存在数据库中。创建 slug 是一种单向转换。不存在“de-slugify”这样的事情,因为多个字符会被翻译成同一个字符。
您应该通过添加数字后缀或类似的内容来处理可能的冲突。
Slugs are meant to be saved in the database along with what they point to. Creating a slug is a one-way transformation. There is no such thing as "de-slugify" as multiple characters get translated into the same character.
You should handle possible collisions by adding a number suffix or something similar.