OroCrm:动态表单



我试图使表单动态工作与Oro 3.1.1和Symfony 3.4。为了使表单动态,我使用ajax发布表单,使用一些侦听器并使用响应html字段更新页面,如Symfony文档中所述:https://symfony.com/doc/current/form/dynamic_form_modification.html#dynamic-generation-for-submitted-forms

我的问题是,有些字段是选择2或自动完成的,所以它们与data-page-component-module相关联。我已经明白,这些字段是在页面上初始化的第一次渲染,通过PageComponentrender()函数,但这在页面加载时运行,我不明白我怎么能呈现来自ajax响应的新字段。

我在文档中没有发现任何关于重新渲染页面组件模块的内容,是否有一种方法可以触发PageController上的page:update事件?如果是这样,我如何获得控制器的句柄?

基本上js代码是这样的:
require(['jquery'], function($) {
$(document).ready(() => {
const $field1 = $('[name="field1"]');
// ...
const $token = $('[name="_token"]');
const controlGroup = '.control-group';
fieldsToReplace = [
'field2',
// ...
];
const updateForm = () => {
const $form = $(this).closest('form');
const data = {};
data[$token.attr('name')] = $token.val();
data[$field1.attr('name')] = $field1.val();
// ...
$.post($form.attr('action'), data).then((response) => {
fieldsToReplace.forEach((field) => {
$(`[name="${field}"]`)
.closest(controlGroup)
.replaceWith($(response).find(`[name="${field}"]`).closest(controlGroup));
});
$field1 = $('[name="field1"]');
$field1.on('change', updateForm);
});
};
$field1.on('change', updateForm);
});
});

所以我想触发一个事件,从响应的html替换后重建新的字段。

Thanks in advance

根据核心中的示例,您必须在新的HTML元素上触发content:changed事件。例如,请参阅https://github.com/oroinc/orocommerce/blob/89631c4/src/Oro/Bundle/PromotionBundle/Resources/public/js/app/views/discount-options-view.js#L49-L53

相关内容

  • 没有找到相关文章

最新更新