CRUD模块和嵌套模型和/或控制器

时间:2012-02-15 01:50:59

标签: module routes playframework crud

是否可以将Entity放入嵌套文件夹/包中并仍使用CRUD模块进行基本管理?

我正在使用 YABE 应用,playframework 1.2.4。

我创建了另一个名为“ Page ”的实体,我尝试将其放在所有文件夹中名为“cms”的子文件夹中,如下所示:

models
-- cms
   -- Page.java
etc.

YABE实体的现有链接创建如下:

<a href="@{Users.list()}">Users</a>

生成路线 admin / users 并引导您进入CRUD生成的页面

但如果你把这样的东西,例如还可以在嵌套文件夹中创建控制器:

<a href="@{cms.Pages.list()}">Pages</a>

生成 cms.pages / list 之类的链接,引导您“找不到

即使我把控制器放在控制器根文件夹中也行不通,显然是因为CRUD模块找不到模型类,因为它在子文件夹中。

当页面相关的类在控制器和模型的根目录中时,一切正常,但我想在这里找到类似“包”的内容。

我做错了什么?

这样的事情可能吗?

如果我将所有内容都移到一个单独的模块中,它会起作用吗?

1 个答案:

答案 0 :(得分:1)

有可能。然而,我发现将实体的CRUD模型保留在不同的包中会使事情变得更复杂,并没有增加那么多的价值。

无论如何,请确保您的控制器使用@ CRUD.for注释,以便他们知道要管理的实体:

@CRUD.For(User.class)
public class Users extends CRUD {
}

如果您需要将视图放在子包中,请播放crud:ov --template cms / Users / list将无法按预期工作,除非您使用以下内容破解crud commands.py:

p = a.split('/')[0]
c = a.split('/')[1]
t = a.split('/')[2]
app.override('app/views/CRUD/%s.html' % t, 'app/views/%s/%s/%s.html' % (p, c, t))

我无法确定,但我认为您可能需要重新定义路由规则,例如:

GET       /cms/?          cms.Users.index
GET       /cms/users      cms.Users.list
GET       /cms/users/new  cms.Users.blank
GET       /cms/users/{id} cms.Users.show