简体   繁体   English

Drupal 表单中字段集的渲染顺序

[英]Render order of Field Sets in a Drupal Form

I have a form that creates multiple entries in a Fieldset depending on a counting variable $form_state['num_entries'] .我有一个表单,它根据计数变量$form_state['num_entries']中创建多个条目。 It contains a Textfield for a region, a Slider element and a hidden field for the slider value.它包含一个区域的文本字段、一个滑块元素和一个滑块值的隐藏字段。

I need the render order to be: The Textfield, The Slider, The Hidden field.我需要渲染顺序为:文本字段、滑块、隐藏字段。

But The form Just renders all the regions, then all the sliders and so on.但是表单只是渲染所有区域,然后是所有滑块,依此类推。 How can I fix the render order?如何修复渲染顺序?

Thanks for your time in advance!提前感谢您的时间!

  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,
      ],
    ];
  }

Okay I found it.好的,我找到了。 It was a mistake with the order of the keys in the arrays.数组中键的顺序是错误的。 Here is the correct way:这是正确的方法:

 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,
      ],
    ];
  }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM