Module 积垢模块和嵌套模型和/或控制器

Module 积垢模块和嵌套模型和/或控制器,module,routes,playframework,crud,Module,Routes,Playframework,Crud,是否可以将实体放在嵌套的文件夹/包中,并且仍然使用CRUD模块进行基本管理 我正在使用YABE应用程序,playframework 1.2.4 我创建了另一个名为“页面”的实体,并尝试将其放入所有文件夹中名为“cms”的子文件夹中,如下所示: models -- cms -- Page.java etc. <a href="@{Users.list()}">Users</a> YABE实体的现有链接如下所示: models -- cms -- Page.j

是否可以将实体放在嵌套的文件夹/包中,并且仍然使用CRUD模块进行基本管理

我正在使用YABE应用程序,playframework 1.2.4

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

models
-- cms
   -- Page.java
etc.
<a href="@{Users.list()}">Users</a>
YABE实体的现有链接如下所示:

models
-- cms
   -- Page.java
etc.
<a href="@{Users.list()}">Users</a>

这将生成路由管理员/用户,并引导您进入CRUD生成的页面

但如果您在嵌套文件夹中放置类似的内容,例如,也创建控制器:

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

生成如下链接cms.pages/list,并将您引导至“未找到”

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

当页面相关类位于控制器和模型的根目录中时,一切正常,但我希望这里有“包”之类的内容

我做错了什么

这样的事情可能吗


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

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

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

@CRUD.For(User.class)
public class Users extends CRUD {
}
如果您需要将视图放置在子包中,则play 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
我记不清了,但我认为您可能需要重新定义路由规则,例如:

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

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

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

@CRUD.For(User.class)
public class Users extends CRUD {
}
如果您需要将视图放置在子包中,则play 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
我记不清了,但我认为您可能需要重新定义路由规则,例如:

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

模块的情况是否相同?我不喜欢模块在游戏中的工作方式!,所以我尝试在单个应用程序中制作“包”,这是crud模块特有的。除了控制器/视图/模型之外,如果愿意,您可以根据自己的需要打包类。模块非常适合为应用程序添加功能,但如果您需要更多控制,您可以随时编辑并在应用程序中包含模块代码。模块的情况是否相同?我不喜欢模块在游戏中的工作方式!,所以我尝试在单个应用程序中制作“包”,这是crud模块特有的。除了控制器/视图/模型之外,如果愿意,您可以根据自己的需要打包类。模块非常适合为应用程序添加功能,但如果您需要更多控制,您可以随时编辑并在应用程序中包含模块代码。