Forms 使用表单标记封闭自定义表单元素(drupal 6.x)

Forms 使用表单标记封闭自定义表单元素(drupal 6.x),forms,drupal,drupal-6,Forms,Drupal,Drupal 6,我已经使用FAPI为我的站点创建了自定义表单。我根据设计器提供的模板将每个控件放置在特定位置。例如— <div id="myform"> <span>Enter Your Name : </span> <?php print drupal_render($form['name']); ?> <span>Gender : </span><?php print drupal_render($form['gender

我已经使用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_形式创建更好?但这样做需要我在末尾手动添加结束表单标记。如有任何建议,将不胜感激。

Drupal-6.x

听起来你可能读过,但跳过了一些FAPI。简言之,如果使用调用表单,则会自动获得表单容器(以及使用FAPI的许多好处,例如令牌、验证等)。要处理围绕表单元素的标记,可以使用、和元素


你可以像现在这样从外到内组装整个表单,但是很少有这样做是值得的。如果您真的想这样做,您基本上需要复制drupal_get_form()所做的工作,以使用FAPI的方式添加表单包装器。

我按照您的建议来实现它。非常感谢。但还有一个问题。当我为我的站点使用模板时(与主题函数相反),我在模板预处理器函数中添加了drupal\u get\u表单调用。它确实奏效了。但我想知道这是否是drupal的建议。因为,通常情况下,这个函数调用是放置在主题函数中的,对于那些使用它的人,我使用的是模板,不确定内部预处理器是否是drupal建议的。也谢谢你的链接。我只是从drupal主题指南中读到了表单,当时我还没有想到drupal站点。如果不知道您正在做什么,很难说您的drupal\u get\u表单调用应该在哪里。一般来说,复杂的逻辑应该远离模板文件,所以预处理函数会更好。但是,根据您所做的,在模块中而不是在主题中执行FAPI可能更有意义。