Wordpress - Ninja表单编辑选择值

时间:2017-06-07 15:09:26

标签: wordpress ninja-forms

我在自定义Wordpress主题中使用Ninja Forms 3.1.4,我尝试在将其保存到数据库之前验证并编辑服务器上的<select>值,例如:

<select>
  <option value="0">Please select a value</option>
  <option value="1" selected>Option One</option>
  <option value="2">Option Two</option>
</select>

在提交时,<option value="1" selected>Option One</option>被选中,其值将保存到数据库中。这意味着,如果我想稍后检索此信息,例如在电子邮件通知中,我将获得 1 &#39;。我宁愿展示&#39; 选项一&#39;或者更人性化的东西。

如果选择值为&#39; 0 &#39;我还想抛出错误。

我在codex中找到了这一部分:http://developer.ninjaforms.com/codex/submission-processing-hooks/

所以,我尝试在我的 functions.php 中实现它:

add_filter('ninja_forms_submit_data', 'edit_select_submit_data');

function edit_select_submit_data($form_data) {

    foreach($form_data['fields'] as $field) {

         /* The doc uses $field['key'] but it seems that
          * I don't have access to it...
          */
        if($field['id'] == '19') { // 19 being my select field ID
            switch($field['value']) {
                case '0':
                    $field['value'] = ''; // Set to empty, so it throws an error
                case '1':
                    $field['value'] = 'Option One'; // Set custom value
                case '2':
                    $field['value'] = 'Option Two'; // Set custom value
            }
        }

    }

    return $form_data;
}

此挂钩被调用,代码正在案例&#39; 1&#39; 下执行,但$field['value']保持不变且未更新。

所以,我想知道我是否使用正确的方法编辑选择字段提交值,因为我似乎无法使其正常工作。

1 个答案:

答案 0 :(得分:0)

在更新字段值时,codex中的示例实际上不起作用,因为foreach变量$field不是{em>引用到{{}中的字段1}},但只是值的副本。

尝试这样做:

$form_data

这样就会更新实际的表单数据,而不仅仅是foreach($form_data['fields'] as $key => $field) { $form_data['fields'][$key]['value'] = 'Custom value'; } 变量。