Drupal 表单中字段集的渲染顺序
Render order of Field Sets in a Drupal Form
我有一个表单,它根据计数变量在 Fieldset 中创建多个条目 $form_state['num_entries']
。它包含一个用于区域的文本字段、一个滑块元素和一个用于滑块值的隐藏字段。
我需要渲染顺序为:
文本域,
滑块,
隐藏字段。
但是表单只渲染所有区域,然后是所有滑块等等。
如何修复渲染顺序?
提前感谢您抽出时间!
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,
],
];
}
好的,我找到了。数组中键的顺序有误。
正确的方法是:
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,
],
];
}
我有一个表单,它根据计数变量在 Fieldset 中创建多个条目 $form_state['num_entries']
。它包含一个用于区域的文本字段、一个滑块元素和一个用于滑块值的隐藏字段。
我需要渲染顺序为: 文本域, 滑块, 隐藏字段。
但是表单只渲染所有区域,然后是所有滑块等等。 如何修复渲染顺序?
提前感谢您抽出时间!
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,
],
];
}
好的,我找到了。数组中键的顺序有误。 正确的方法是:
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,
],
];
}