欢迎使用 SO 和 Drupal Form API(很高兴将其称为 FAPI,但您知道 Internet 模因)。首先,让我们知道您需要使此表单工作的 Drupal 版本,以及您需要在哪里显示此表单。
有关不错的启动教程,请参见http://drupal.org/node/751826。不要忘记它是针对 Drupal 6 的。
如果您想在特定页面中显示表单(例如 /myform),您必须使用 hook_menu() 来注册您的路径。然后,只要您有 drupal_get_form 作为回调函数,您就不必打印/回显表单。
建立表单的最简单方法是将 PHP 代码放在一个块中(没有人说它更容易 - 只是我的想法。)您不需要参数来构建表单。
function test_myform(){
$form['description'] = array(
'#type' => 'item',
'#title' => t('A form with nothing but a textfield'),
);
// This is the first form element. It's a textfield with a label, "Name"
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Name'),
);
return $form;
}
现在你有了一个可以从 test_myform() 调用的表单数组。酷吧?
使用它来显示表单。
return drupal_get_form('my_form');
然后您会看到这与您已经尝试过的代码相同。这就是版本有用的地方。这在 D6 中有效,但在 D7 中不再有效。现在试试这个:
return drupal_render(drupal_get_form('my_form'));
看 ?
请注意,此代码将在 php 块中使用。不建议启用 php 过滤器模块,但您必须这样做才能获取表单。
最好的方法是定义自己的块或菜单回调来获取表单。请参阅http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_menu/7了解如何注册路径。现在,请注意,您需要使test_myform()
函数接受参数作为代码。页面回调应该是 drupal_get_form 并且不需要drupal_render()
获取显示的表单。