我在自定义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']
保持不变且未更新。
所以,我想知道我是否使用正确的方法编辑选择字段提交值,因为我似乎无法使其正常工作。
答案 0 :(得分:0)
在更新字段值时,codex中的示例实际上不起作用,因为foreach
变量$field
不是{em>引用到{{}中的字段1}},但只是值的副本。
尝试这样做:
$form_data
这样就会更新实际的表单数据,而不仅仅是foreach($form_data['fields'] as $key => $field)
{
$form_data['fields'][$key]['value'] = 'Custom value';
}
变量。