Ste*_*ano 6 crud playframework
我正在寻找的是快速(干!)为给定模型生成表单的能力,但是使用CRUD表单/模型的控制方式较少; 例如,通过能够使用没有完整的crud控制器/路由的crud标签,或通过强烈定制它们.
让我通过一个例子来解释.
我有一个模型A而不是链接(ManyToOne)到2个模型,B和C.
class public A extends Model {
public String name;
@ManyToOne
public A a;
@ManyToOne
public B b;
}
Run Code Online (Sandbox Code Playgroud)
我希望能够写出以下路线:
/A/{id}/B/ somecontroller
/A/{id}/C/ some(other?)controller
Run Code Online (Sandbox Code Playgroud)
甚至更好:
/A/{id}/{submodel}/ somecontroller
Run Code Online (Sandbox Code Playgroud)
并在相应的html视图中可以执行以下操作:
<div>object.name</div>
#{form action:@save(object.b._key()), enctype:'multipart/form-data'}
#{crud.form object.b /}
<p class="crudButtons">
<input type="submit" name="_save" value="&{'crud.save', type.modelName}" />
<input type="submit" name="_saveAndContinue" value="&{'crud.saveAndContinue', type.modelName}" />
</p>
#{/form}
Run Code Online (Sandbox Code Playgroud)
当"对象"不是"B"或"C"的实例,但"一",我可以告诉#{crud.form /}它应该映射哪个模型(在这种情况下,"B")
有没有办法实现类似的东西?
问题可以解决:
#{form MODEL} #{/form}标签?!或者,通过能够以某种方式定制更多的CRUD,例如.
我担心我无法通过简单地覆盖模型CRUD控制器来实现这个目标,也许我错了,但除了阅读CRUD代码(我正在做)之外,官方文档对于哪些方法可以被覆盖有点限制如何...
相关:如何在playframework中为模型创建html表单
我也刚刚发现这个google邮件线程似乎进入了custom-crud方向.我希望能为这种典型需求提供更加开箱即用的解决方案......
Ste*_*ano 10
我在这出戏中找到了!google group thread我正在寻找的答案..一切都已经存在,虽然没有记载!
它就像使用一样简单:
显示Model类的创建形式.
#{crud.form class:'models.ModelName' /}
Run Code Online (Sandbox Code Playgroud)
显示任何现有实例的版本形式
#{curd.form object:anyInstance /}
Run Code Online (Sandbox Code Playgroud)
然后你可以按照自己的意愿去,但这是我编辑现有对象的模式:
#{form @Controller.Action, method="POST" ... }
<input type="hidden" name="object.id" value="${myobject.ID}" />
#{crud.form object:gun.gunEngraving}
#{/crud.form}
<p>
<input type="submit" value="Save Changes" />
</p>
#{/form}
Run Code Online (Sandbox Code Playgroud)
隐藏的输入设置特殊的"id"字段,以便:
function static void Action(routeParams, MyModel object) {
some validation;
object.save();
render or renderTemplate or other action for redirect;
}
Run Code Online (Sandbox Code Playgroud)
这当然是一个简化的代码,但我真的很喜欢这种模式,因为我很快就需要将一个表单嵌入到一个视图中而不能/不想使用整个CRUD系统!
crud标签实际上不需要crud模块.这么多,我最终将它们全部复制到我的项目中,攻击它们以添加其他很酷的功能,例如能够从默认的"对象"更改表单中对象的名称(我决定覆盖原件,但是您可以使用与tags/crud命名空间不同的文件夹创建自己的文件夹
| 归档时间: |
|
| 查看次数: |
4259 次 |
| 最近记录: |