【问题标题】:enclosing custom form element with form tag (drupal 6.x)用表单标签封闭自定义表单元素(drupal 6.x)
【发布时间】:2010-07-29 22:08:34
【问题描述】:

我使用 FAPI 为我的网站创建了自定义表单。我根据设计者提供的模板将每个控件放置在特定位置。例如 -

<div id="myform">
  <span>Enter Your Name : </span> <?php print drupal_render($form['name']); ?>
  <span>Gender : </span><?php print drupal_render($form['gender_radio']); ?>
  ....
</div>
 <?php print drupal_render($form['submit']); ?>

这是我的问题 - 如何将所有元素包含在表单标签内?在drupal中对模板文件中的表单标签进行硬编码是否正确?还是在 hook_form 中创建更好?但这样做需要我在最后手动添加关闭表单标签。任何建议将不胜感激。
Drupal - 6.x

【问题讨论】:

    标签: forms drupal drupal-6


    【解决方案1】:

    听起来您可能读过有关building individual fields 的内容,但跳过了 FAPI 的一些basic concepts。简而言之,如果您使用drupal_get_form() 调用表单,您将自动获得表单容器(以及使用 FAPI 的许多好处,例如令牌、验证等)。要处理围绕表单元素的标记,您可以使用 #prefix#suffixmarkup 元素。

    您可以像现在这样从外部组装整个表格,但很少有真正值得这样做的情况。如果你真的想这样做,你基本上想复制 drupal_get_form() 所做的事情,以一种适用于 FAPI 的方式添加表单包装器。

    【讨论】:

    • 我按照你的建议让它工作。谢谢一堆。但是还有一个问题。当我为我的站点使用模板时(与主题函数相反),我在模板预处理器函数中添加了 drupal_get_form 调用。它确实起到了作用。但我想知道这是否是drupal的建议。因为,通常情况下,这个函数调用放在主题函数中,供那些使用主题函数的人使用,我正在使用模板,不确定内部预处理器是否是 drupal 建议的。并感谢链接。我只是从 drupal 主题指南中阅读了有关表单,当时我并没有想到 drupal 网站
    • 在不确切知道自己在做什么的情况下,很难说出您的 drupal_get_form 调用应该在哪里。一般来说,复杂的逻辑应该远离模板文件,所以预处理函数会更好。但是根据您的工作,在模块中而不是在主题中执行 FAPI 内容可能更有意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多