Как получить $form_state->getUserInput() в каждой инлайн форме а не только в первой?

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

Аватар пользователя nathan158 nathan158 16 сентября 2023 в 20:07

Я использую модуль Inline Entity Form для создания multiple вложенных форм. У меня есть форма design, в которой есть инлайн форма - garment. А внутри формы garment есть поле product.

В hook_inline_entity_form_entity_form_alter() я получаю $field_product_user_input:

<?php
$field_product_user_input 
$form_state->getUserInput()['field_design']['form']['inline_entity_form']['entities']['0']['form']['field_garment']['form']['inline_entity_form']['entities']['0']['form']['field_product']['0']['target_id'];
?>

Это происходит потому, что вторая форма имеет ключ «1» в массиве «entities», а в приведенном выше коде для первой формы используется «0».

$form_state->getUserInput() показывает этот результат:

result = [
  'field_design' => [
    'form' => [
      'inline_entity_form' => [
        'entities' => [
          '0' => [
            'form' => [
              'field_garment' => [
                'form' => [
                  'inline_entity_form' => [
                    'entities' => [
                      '0' => [...],
                      '1' => [...] // new garment
                    ],
                  ],
                ],
              ],
            ],
          ],
        ],
      ],
    ],
  ],
];