Как мне изменить значения веб-формы перед отправкой?
Я пытаюсь добавить некоторые значения в скрытое поле в моей веб-форме перед отправкой. Есть ли какие-либо крючки для доступа к отправке веб-форм в Drupal 8? Я пытался Как изменить поле отправки веб-формы прямо перед его сохранением? безрезультатно.
2
2 answers
Связанный ответ в основном правильный, всего пара обновлений, чтобы он заработал. В пользовательском модуле добавьте:
use Drupal\Core\Form\FormStateInterface;
function MODULENAME_form_alter(&$form,$form_state, $form_id) {
if ($form_id == 'FORMID') {
$form['actions']['submit']['#validate'][] = 'MODULENAME_form_validate';
}
}
function MODULENAME_form_validate($form, FormStateInterface $form_state) {
$form_state->setValue('hidden_id', 'Value for Hidden field');
}
6
Author: HeyOkaySaturday, 2017-03-07 21:43:56
Для изменения значений веб-формы перед отправкой -
В своем коде я изменяю метку времени с "Y-m-d ЧЧ:ММ:СС" на формат "Y-m-d" и изменяю его перед сохранением в БД. Кроме того, я создаю пользовательское имя модуля как "webform_presave"
/**
* Implements hook_ENTITY_TYPE_presave().
*/
function webform_presave_webform_submission_presave(\Drupal\webform\Entity\WebformSubmission $submission) {
$submissionCreated = $submission->getCreatedTime();
$submissionCreatedChnaged = format_date($submissionCreated, 'custom_date');
$a = strptime($submissionCreatedChnaged, '%Y-%m-%d');
$timestamp = mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900);
$submission->setCreatedTime($timestamp);
}
1
Author: Kashmiri, 2019-04-24 06:59:15