php – Drupal Form API – 使用foreach循环来构建表单
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Drupal Form API – 使用foreach循环来构建表单,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1927字,纯文字阅读大概需要3分钟。
内容图文
我正在构建一个Drupal模块,使用管理表单将图标绑定到特定页面.放置在某个目录中的每个图像都需要输出,旁边的选择框显示所有主要链接标题.
我使用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)或每个文件的任何其他唯一和SAFE标识符. .
内容总结
以上是互联网集市为您收集整理的php – Drupal Form API – 使用foreach循环来构建表单全部内容,希望文章能够帮你解决php – Drupal Form API – 使用foreach循环来构建表单所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。