【发布时间】:2009-11-11 17:36:47
【问题描述】:
我正在尝试在 drupal 6 中创建一个表单,该表单在同一行上有多个项目。更具体地说,我想要一个右对齐的表单,它有一个文本字段、下拉框和按钮都在同一行。
我知道如何创建项目,但 drupal 倾向于将它们全部放在单独的行上。怎么写成一行?
谢谢
【问题讨论】:
标签: php forms drupal-6 coding-style drupal-fapi
我正在尝试在 drupal 6 中创建一个表单,该表单在同一行上有多个项目。更具体地说,我想要一个右对齐的表单,它有一个文本字段、下拉框和按钮都在同一行。
我知道如何创建项目,但 drupal 倾向于将它们全部放在单独的行上。怎么写成一行?
谢谢
【问题讨论】:
标签: php forms drupal-6 coding-style drupal-fapi
您需要使用 CSS 来定位它们。他们每个人都应该在自己的 div 中,所以应该不会太难。
附:将某些内容硬编码到标记中的同一行并不是一个好主意。您应该始终在 CSS 中进行布局和定位,并将标记仅用于将项目输出到页面。
【讨论】:
我当然同意前面的回答:CSS 是要走的路!。真正的问题是:你应该把 CSS 位放在哪里?
我强烈建议将它放在一个单独的 .css 文件中,因为这将大大减轻参与该项目的其他人的生活,并保持代码可移植到另一个主题,当/如果需要重新设计时将会来。这很容易做到,因为每个 from 元素都是用自己的包装 div 生成的。您需要用来告诉drupal 使用给定的.css 文件(如果您不将样式添加到现有文件)的函数是drupal_add_css()。
也就是说,如果您仍然想要/需要/必须调整您在生成表单的代码中提到的行为,我建议您使用 $form 数组的 #prefix 和 #suffix 属性。这些对所有表单元素都是通用的,并允许您将 HTML 直接注入到呈现的表单中(当然,给定元素之前的前缀,之后的后缀)。这样您就可以通过<style type="text/css"> 标记将<div> 和<span> 等html 元素和CSS 放在需要的位置。
我想强调的是,第一个解决方案(外部 CSS 文件)要好得多。
希望这会有所帮助!
【讨论】:
虽然我同意 CSS 通常是为表单设置主题的正确方法,但有时您需要更强大的方法。我写了一篇关于theming complex forms with tabular information 的文章,就像一个人的列表,他们的姓名和SSN 都打印在一行上。
【讨论】:
Drupal Forms API 通常使用包装器 div 元素输出每个元素,并使用类名“form-item”设置。
例如。
<div class="form-item">
<label> ... </label>
<input> ... </input>
<div class="description"> ...</div>
</div>
要让三个元素并排放置,您需要设置宽度(使元素足够窄以适合一行),并应用 'float: left;'使用 div.form-item 作为 CSS 选择器。
为确保元素正确清除,请应用 'overflow: hidden;'到包含三个表单元素的父元素。
【讨论】: