Порядок отображения наборов полей в форме Drupal - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть форма, которая создает несколько записей в наборе полей в зависимости от счетной переменной $form_state['num_entries']. Он содержит текстовое поле для области, элемент Slider и скрытое поле для значения ползунка.

Мне нужно, чтобы порядок визуализации был: Текстовое поле, Ползунок, Скрытое поле.

Но форма просто отображает все регионы, затем все ползунки и так далее. Как я могу исправить порядок визуализации?

Спасибо за ваше время заранее!

  for ($i = 0; $i < $form_state['num_entries']; $i++) {


    $form['region_fieldset']['places'][$i] = [
      '#type' => 'textfield',
      '#title' => "Region" . " " . ($i + 1),
      '#size' => 22,
      '#attributes' => ['multiple' => 'multiple'],
      '#default_value' => isset($default_values["regions"][$i]) ? $default_values["regions"][$i] : '',

    ];

    $form['region_fieldset']["radius_slider"][$i] = [
      '#type' => 'slider_form_element_field',
      '#title' => 'Radius',
      '#attributes' => ['multiple' => 'multiple', 'id' => "slider_" . $i],
      '#default_value' =>  40,
    ];

    $form['region_fieldset']['slider_value'][$i] = [
      '#type' => 'hidden',
      '#default_value' => isset($form['entry_fieldset']["test-slider"]["#default_value"]) ? $form['entry_fieldset']["test-slider"]["#default_value"] : 40,
      '#attributes' => [
        'class' => ['slider-hidden-value'],
        'multiple' => 'multiple',
        'id' => "slider_value_" . $i,
      ],
    ];
  }

1 Ответ

0 голосов
/ 24 февраля 2020

Хорошо, я нашел это. Это была ошибка с порядком ключей в массивах. Вот правильный путь:

 for ($i = 0; $i < $form_state['num_entries']; $i++) {


    $form['region_fieldset']['regions'][$i]["places"] = [
      '#type' => 'textfield',
      '#title' => "Region" . " " . ($i + 1),
      '#size' => 22,
      '#attributes' => ['multiple' => 'multiple'],
      '#default_value' => isset($default_values["regions"][$i]) ? $default_values["regions"][$i] : '',

    ];

    $form['region_fieldset']["regions"[$i]["radius_slider"]] = [
      '#type' => 'slider_form_element_field',
      '#title' => 'Radius',
      '#attributes' => ['multiple' => 'multiple', 'id' => "slider_" . $i],
      '#default_value' =>  40,
    ];

    $form['region_fieldset']["regions][$i]["slider_value"] = [
      '#type' => 'hidden',
      '#default_value' => isset($form['entry_fieldset']["test-slider"]["#default_value"]) ? $form['entry_fieldset']["test-slider"]["#default_value"] : 40,
      '#attributes' => [
        'class' => ['slider-hidden-value'],
        'multiple' => 'multiple',
        'id' => "slider_value_" . $i,
      ],
    ];
  }
...