我正在构建一个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 = '';

$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,foreach,drupal,drupal-fapi

来源: https://codeday.me/bug/20190610/1210479.html

php form foreach,php – Drupal Form API – 使用foreach循环来构建表单相关推荐

  1. js 表单设计器_准备迎接Vue3,使用Vue Composition API生成干净可扩展的表单

    表单是前端开发中最棘手的部分之一,您可能会在其中发现很多混乱的代码. Vue.js 2之类的基于组件的框架在提高前端代码的可伸缩性方面做了很多工作,但是形式问题仍然存在. 在本教程中,我将向您展示新的 ...

  2. 提交按钮在form之外的提交方式,提交按钮提交页面任意表单

    上结构 <form id="loginForm" action="{:url('Index/add')}" method="post" ...

  3. Graphql 初体验 第十一章 | #13 Hitting the API(实现了登录注册表单)

    对应内容:#13 Hitting the API | Build a Complete App with GraphQL, Node.js, MongoDB and React.js 主要内容: 完成 ...

  4. form左上角有个锁的符号_第三章 表单笔记

    attion 此属性指示服务器处理表单输出的程序一般来说,当用户单点击的"提交"按钮后信息发送到Web服务器上,由attion属性所指的程序处理如果action为空则默认提交到本页 ...

  5. 一步步学习微软InfoPath2010和SP2010--第十二章节--管理和监控InfoPath Form Services(IPFS)(4)--监控含图片控件的Products表单...

    如本章节前面提到的,你的IPFS表单表现没有你想象的好有很多可能的原因.一个最明显的原因是表单产生太多通信量(因为表单产生的HTML的大小).在许多你使用了大型.笨拙表单的许多方法中,最常见的是让用户 ...

  6. Java POJO Bean 对象与 Web Form 表单的自动装配

    PS: 我一直在找寻为什么 struts2有自动将form字段和getter setter 自动 匹配的功能, 这篇文章解答了我的疑惑 深度剖析:Java POJO Bean 对象与 Web Form ...

  7. Jquery提交表单 Form.js官方插件介绍

    來源:http://hi.baidu.com/dereky/blog/item/f9e8ab64c52f4ff3f736540c.html [JQuery框架应用]:form.js官方插件介绍 For ...

  8. django之Form表单

    HTML表单 在HTML中,表单是<form>...</form> 之间元素的集合,它们允许访问者输入文本.选择选项.操作对象和控制等等,然后将信息发送回服务器. 某些表单的元 ...

  9. DHTMLX 前端框架 建立你的一个应用程序 教程(八)-- 添加表单Form

    添加表单Form 我们下一步是在页面中添加一个表单,表格中的选中字段将会显示在表单中.提供一个提交按钮 可以对显示的数据进行修改提交. 添加表单到布局单元格中 1.在右侧布局中使用attachForm ...

  10. antd Design Form表单的简单理解

    关于react+ant的运用配合的学习心得,还是新手各位大佬见谅 1 对于普通的开发需求来说(仅仅限于类组件) 引入Form 关于Form 有以下几种常用属性 <Form ></Fo ...

最新文章

  1. 使用PHP自带zlib函数 几行代码实现PHP文件打包下载zip
  2. Eclipse启动之一:外壳程序(百度空间迁移)
  3. GDCM:Traverse Modules的测试程序
  4. Zookeeper超详细的面试题
  5. 深入理解计算机系统第四版_深入理解计算机系统之存储器层次结构
  6. Need ffmpeg exe. You can download it by calling: imageio.plugins.ffmpeg.download()
  7. [Android] 混音线程MixerThread
  8. 新装好SQL2005时SA无法登陆的解决办法
  9. 同轴全息matlab仿真,基于MATLAB的计算全息干涉图仿真
  10. 八大排序算法(5)——快速排序
  11. 增强安全性、支持跨页逻辑关系设定的电信运营级EnableQ在线问卷调查引擎V1.60来了......
  12. JspStudy环境下tomcat服务器无法正确运行servlet的一种解决方法
  13. [网络安全自学篇] 九.社会工程学之基础概念、IP获取、IP物理定位、文件属性
  14. 洛谷P1330 封锁阳光大学(BFS, 并查集)
  15. 去国企1年后,我后悔了!重回大厂内卷
  16. html子代选择器,Css 后代选择器与子代选择器的区别
  17. outlook邮件路径更改_如何在Outlook中更改电子邮件的“答复”地址
  18. 【Qt】Q_INIT_RESOURCE的使用
  19. Android 天气APP(十一)未来七天的天气预报、逐小时预报、UI优化
  20. 2020-11-22 Vue-10组件化开发(1)

热门文章

  1. 每日一个机器学习算法——机器学习实践
  2. cent OS 6.3 yum方式安装openldap,phppldapadmin,lam
  3. 6016.Linux shell脚本编程规范(第1版)
  4. 下载《SUN的UNIX操作系统solaris 10 for x86》(solaris 10)ver 10[ISO]
  5. java实现k线图自动化_Python秒绘交互式股票K线图!这就是Python的优势!
  6. java报数报到3的人_Java-n个人报数
  7. dynamic集合动态添加属性
  8. 服务器装系统怎么显示盘符,安装双系统如何实现各系统盘盘符均显示为C盘
  9. access抓取数据_网页数据抓取之当当网
  10. JAVA:获得当前执行路径的办法