[尝试从第三方API获取json时,为表单动态创建新字段。基于此json,我需要在表单中添加一些字段-不是固定数字。因此,我正在执行此操作,将其挂接到gform_pre_render
:
$props = array(
'id' => $my,
'type' => 'singleproduct',
'label' => 'Test product',
'basePrice' => floatval( 120 ),
);
$nf = GF_Fields::create( $props );
// insert into array in specific position
array_splice( $form['fields'], 11, 0, array($nf) );
这有效,即,它在前端正确显示了字段。现在,问题在于,提交表单后,除了这些动态添加的字段外,所有其他字段都在提交中。但是这些不是。我认为必须这样做,因为这些字段未在表单中注册,因此我也尝试了GFAPI::update_form( $form );
,但这对提交部分没有帮助,尽管它也会在后端添加新字段来填充我的表单。
有什么想法吗?
根据您的用例Milos,我建议使用gform_form_post_get_meta过滤器:
https://docs.gravityforms.com/gform_form_post_get_meta/
这将在每次从数据库中获取表单时触发,并且会出现确保字段可靠的最可靠方法。
如果您更愿意接受外科手术,并坚持使用gform_pre_render方法,则希望将相同的功能应用于其他几个过滤器:
gform_pre_process
gform_admin_pre_render