2012-06-28 18 views
3

我正在开发一个Play 2module公开一些URL,并且想知道如何将这些URL“提供”到托管我模块的Play应用程序。播放2个模块:如何在没有紧密耦合的情况下添加路由?

例子:假设我的模块(称为store)实现了文档库,提供(其中包括)该URL document/<id>读取ID为<id>文档。根据需要,使用此模块的应用程序可能会在http://example.org/media/document/<id>http://example.org/document/<id>或其他位置下公开此URL。

问题:模块如何将URL(路由)暴露给其包含的应用程序而不对其进行硬编码?

注意:我来自Django并且正在寻找类似于Django URLconfs的机制。

+0

有关如何将模块路由映射到顶级路由的子路径的教程。 https://github.com/playframework/Play20/blob/master/documentation/manual/Highlights.md#allow-more-modularization-for-your-projects – agabor

回答

3

你可能问HTTP routing

请注意,你需要把在主conf/routes文件路由rulez。它应该在Play版本2.1中更改。

编辑:

支票为例sample of SecureSocial(还有斯卡拉版),检查如何将模块的路线在conf/routes

+0

它将在2.1中如何改变? –

+0

@AdamRabung:通过包含其他路线文件:https://play.lighthouseapp.com/projects/82401/tickets/12-support-multiple-routes-file-and-inclusion。当然,这并不意味着你现在不能使用模块控制器的路由,你只需要将它们放在主应用程序的路由文件中。 – biesior

+0

@beisior如何重定向到控制器的securesocial的特定URL?当我重定向到我的应用程序的URL时,我编写了routes.MyController.index()。absoluteURL(request())。我应该如何编写以在securesocial中调用LoginPage控制器的登录名? –

3

这是现在支持2.1的代表,见在release notes中的“允许您的项目更多模块化”部分。好消息!

2

如果我不是你想重定向基于某些参数。那么你可以组成共同的控制器,他们你可以使用

return redirect(routes.Application.XYZ()); 

重定向到你想要的地方。

相关问题