gpt4 book ai didi

php - Drupal 表单 API - 使用 foreach 循环构建表单

转载 作者:可可西里 更新时间:2023-10-31 22:06:42 25 4
gpt4 key购买 nike

我正在构建一个 Drupal 模块,以使用管理表单将图标绑定(bind)到特定页面。放置在特定目录中的每个图像都需要输出,旁边有一个选择框,显示所有主要链接标题。

我已经使用 foreach 循环构建了表单,但是当我使用 dpm($form); 在 _submit 函数中检查输出时,每个图像的 #value页面元素始终等于为最后一张图片设置的元素。

这是我的代码:

function titleicon_admin_settings() {


$settings = variable_get('titleicon_settings', $default);

//build an array of primary link titles
$primary_links_items = menu_primary_links();
foreach ($primary_links_items as $item) {
$title = $item['attributes']['title'];
$href = $item['href'];
$titles[$href] = $title;
}

//build array of icons
$directory = file_directory_path() . '/icons';
$mask = '(jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG)';
$icons = file_scan_directory($directory, $mask);



foreach ($icons as $icon) {
$name = $icon->name;
$path = base_path() . $icon->filename;
$html = '<img src="' . $path . '" width="50" height="50" />';
$default_value = $settings[$name]['page'];

$form[$name] = array(
'#type' => 'fieldset',
'#title' => $name,
);

$form[$name]['path_to_icon'] = array(
'#type' => 'value',
'#value' => $path,
);

$form[$name]['icon'] = array(
'#type' => 'markup',
'#value' => $html,
);

$form[$name]['page'] = array(
'#type' => 'select',
'#title' => t('Show icon on page'),
'#default_value' => $default_value,
'#description' => t('Choose which page to show icon on.'),
'#options' => $titles,
);
}

$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
);

return $form;
}

最佳答案

这很有道理。如果您的字段声明如下:

$form[$name]['path_to_icon'] = array(
'#type' => 'value',
'#value' => $path,
);

然后对于每个文件,您都更新相同的变量 - 'path_to_icon'。字段集键“$name”在这里无关紧要,因为它仅用于将表单字段分组在一起。

你需要使用更像的东西:

$form[$name]['path_to_icon_'.$name] = array(
'#type' => 'value',
'#value' => $path,
);

然后你将在发布表单后获得多个值。

但是,说实话,我不会使用 $name 作为变量名的元素,你应该使用类似自动递增的 $fid(文件表中的文件 ID)或任何其他唯一且安全的标识 rune 件...

关于php - Drupal 表单 API - 使用 foreach 循环构建表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6456671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com