我正在尝试获得更好的设置来更新具有嵌套属性的模型。
现在在我的编辑视图中,我手动定义 textFieldTag 以通过将名称设置为来创建 params 结构"myModel[myNestedProperty][#modelID#,#key2id#][name]"
在更新行动中...
如果我只是使用myModel.update(params.myModel)
,如果有任何需要删除的元素,我将无法使更新工作
所以我销毁了与 myModel 具有相同 id 的嵌套属性的所有模型,在这种情况下它可以工作。
缺点是如果更新失败,嵌套的属性就全部消失了。
在删除它们并对其进行 ing 之前,我尝试先获取所有模型.save
,但由于某种原因,这不起作用。
看起来 cfwheel 是为这种与复选框的关系设置的,但我需要它来处理文本字段并在我的表单中选择项目。
更新
我意识到我还有另一个问题。本质上,我想对此进行扩展,以便能够在多个嵌套属性和关系中使用它。
问题在于我设置名称的方式,特别是对于选择下拉菜单:
name="myModel[myNestedProperty][#modelID#, ][nestedID]"
问题是无法声明第二个 id,因为它将被分配为 id 而不是使用我选择的值。
老实说,这是我一直在努力解决的一个问题。我通过在控制器中重新生成模型来处理它,我只是忘记了我还没有解决这个问题。
有没有办法让这些值根本不被使用,并让它们从结构中动态填充?
假设我有(截断)一个名称tcat[34,0][catID]
或tcat[34,][catID]
,(其中 catID 应该是第二个 ID)。
生成的参数的 tcat 结构是
[34,0]{catID = 12,14,18}
或者
[34,]{catID = 12,14,18}
我希望参数的 tcat 结构具有多个结构,例如:
[34,12]{tID = 34; catID = 12}
[34,14]{tID = 34; catID = 14}
[34,18]{tID = 34; catID = 18}
有没有解决的办法?
我正在使用许多复合键嵌套属性,如果我可以让这部分单独工作,它会更容易。我知道一种方法是使用 javascript 更新名称,但我认为这将是(非常非常)最后的手段。