$form_state->getValues() - сортировка полученных значений как настроено в Управлении отображением

Главные вкладки

Аватар пользователя g2100636 g2100636 15 июля 2022 в 20:22

Есть контактные формы созданные тут: /admin/structure/contact
В них есть разные поля.

В своем модуле получаю значения полей форм:

<?php  
function mymodule_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state$form_id) {
    
$form['actions']['submit']['#submit'][] = 'my_form_submit';
}

function 

my_form_submit(&$form, \Drupal\Core\Form\FormStateInterface $form_state){
   
$data $form_state->getValues();
}
?>

Проблема в том, что в массиве $data - поля в разнобой.
Как их получить в сортировке как настроено в Управлении отображением, т.е. так же как заполняет клиент?

Лучший ответ

Комментарии

Аватар пользователя OldWarrior OldWarrior 18 июля 2022 в 5:34

Я позднее обнаружил (и, надеюсь, вы поняли), что в примере на автомате допустил ошибку в типе параметра &$form. В современных версиях PHP передача параметра как ссылки (&) не допускается. Т.е. правильно:

<?php
...
$sorted = \Drupal\Core\Render\Element::children($formTRUE);
...
?>

Пишу поправку в основном для тех, кто найдёт топик в поиске.