Я использую Ninja Forms 3.1.4 в настраиваемой теме Wordpress, и я пытаюсь проверить и отредактировать значение <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». Я бы предпочел показать "Вариант 1" или что-нибудь более понятное для человека.
Я также хотел бы выдать ошибку, если значение select равно «0».
Я нашел этот раздел в кодексе: 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;
}
Эта ловушка вызывается, и код выполняется в случае '1', но $field['value']
остается прежним и не обновляется.
Итак, мне интересно, правильно ли я использовал подход к редактированию значения отправки выбранного поля, потому что я не могу заставить его работать.