Есть контактные формы созданные тут: /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 - поля в разнобой.
Как их получить в сортировке как настроено в Управлении отображением, т.е. так же как заполняет клиент?
Комментарии
https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Render%21...
<?php
$sorted = \Drupal\Core\Render\Element::children(&$form, TRUE);
foreach($sorted as $element_name) {
//...
}
?>
сработало)
спасибо!
Я позднее обнаружил (и, надеюсь, вы поняли), что в примере на автомате допустил ошибку в типе параметра
&$form
. В современных версиях PHP передача параметра как ссылки (&) не допускается. Т.е. правильно:<?php
...
$sorted = \Drupal\Core\Render\Element::children($form, TRUE);
...
?>
Пишу поправку в основном для тех, кто найдёт топик в поиске.