有两种型号,比方说A和B的 A hasMany B 关系。用户可以在创建A时将尽可能多的B行关联。应用程序允许用户使用JQuery动态添加和删除B行,更具体地说,通过以下示例 - http://jsfiddle.net/mjaric/tfFLt/
除非由于服务器端验证而导致save(使用saveAll)失败,否则一切都很有效。在这种情况下,页面会在提交时刷新,并且所有动态添加的字段都会丢失,用户必须从头开始重新创建所有行。
有没有办法,使用JQuery的动态添加字段都不会丢失并保留旧值(与Cake的默认行为相同)?可能是Ajax请求是一个选项,所以页面不会重新加载服务器端验证失败,但对我来说这不是一个选项,因为表单有一个文件上传,据我所知Ajax请求不支持文件trsnafer?< / p>
答案 0 :(得分:0)
正如所指出的那样,在验证失败时渲染视图时,您可以静态地放置所有字段。
通过AJAX无法上传文件,因为您无法从JS读取文件。虽然有一个完善的解决方法:你可以将表单暂时放入一个不可见的iframe,本地提交,并触发回调,因为这将是一个AJAX响应。
jQuery form plugin在使用AJAX方式提交表单时非常棒,并在遇到文件字段时透明地执行后者。