在将相关记录链接到主记录之后,我尝试能够从服务器获取枢轴数据的一些值 . 这是输入数据透视数据的一个步骤,其中一些应该生成(手动输入它们没问题,问题是通过AJAX实现):
这是相关fields.yaml的示例
fields:
pivot[sort]:
label: Order
type: number
span: auto
pivot[time_from_start_to_sight]:
label: Time from start to the sight
type: number
span: auto
pivot[add_route_time]:
label: Add time
type: number
span: auto
pivot[add_route_price]:
label: Basic add. price
type: number
span: auto
pivot[stay_time_default]:
label: Default stay time
type: number
span: auto
pivot[stay_time_min]:
label: Min. stay time
type: number
span: auto
pivot[stay_price]:
label: Price per quarter of hour
type: number
span: auto
_gmaps_sync:
label: You may try to get data from Google Maps API
type: gmapsroutesightsync
commentAbove: Make sure you have entered Google Maps API key
如您所见,我添加了一个自定义小部件,以便能够绘制按钮 . 我甚至可以调用窗口小部件的AJAX处理程序并将新值应用于传递的数据,将它们保存到控制器内的数据库中 .
但我没有丝毫想法如何推送更新的部分或用新值更新部分 . 当然,可以通过非有组织的JS代码更新每个领域 - 但我确信这是一种聪明的方式 .
请指出最佳做法 . 谢谢 .
1 回答
您可能需要更新部分表单,将其从更新所有数据并保存的控制器中推送出来 .
我想对于数据透视数据表单你已经定义了部分,它将呈现“关系”,这样你就可以更新那个部分 .
当你使用October的ajax框架进行ajax调用时,你可以使用类似的东西
要么
如果以编程方式启动请求即可
你可以在这里详细检查api:https://octobercms.com/docs/ajax/update-partials
这里我的透视关系名称是 "classes" 所以id是这样生成的,但你可以检查元素以获得正确的id,它将在"modal-body"内 .
现在从控制器你只需要推送更新的部分,它将自动更新 .
这里最好在你正在渲染页面的同一个控制器上编写这个方法,因为它已经定义了关系的定义,因此关系小部件已经构建 .
如有任何疑惑,请在评论中告诉我 .
更新
您需要在更新字段的控制器中添加此代码
并且您需要从关系管理器添加一个部分覆盖 . you can see i am adding custm id = 'id'=>"myform"
我认为它应该做你的工作 . 如果它不工作,那么我需要你的代码;)