0

我知道这不是一个 drupal 论坛,但是由于我在那里没有得到任何回应,所以我决定在这里试一试。

我正在创建一个接受用户自定义内容的网站。因此,就此而言,该站点有一个表单和一个自定义模块。此表单不使用管理主题,而是放置在自定义模板中,该模板被创建为与其余页面具有统一的外观。因此,通过 hook_form 创建表单元素是没有问题的。这就是我的问题所在。由于此表单使用自定义主题,我不确定如何让 drupal 在提交表单时知道用户正在提交新的内容数据?

  • 我是否需要使用与管理页面的内容提交页面相同的查询字符串,例如 - ?q=node/add/page 作为 html 表单的操作属性?(或者)

  • 唯一的方法是将url映射到我的自定义函数并在其中调用某种钩子?

谢谢

4

1 回答 1

3

您可以从字面上为您的表单创建任何您想要的标记,您需要做的就是#theme在定义表单时使用该属性。有了它,您可以为表单本身和任何元素设置主题功能。

不使用 Drupal 的 FAPI是一个非常糟糕的主意。它为你解决了很多问题,如果你想在你的网站上打开一个安全漏洞,不使用它是第一步。如果你不使用它的 API,像 Drupal 这样的开发框架没有多大价值。

编辑:
首先要做的是去 Drupal 的FAPI 参考。您可以在那里了解有关 FAPI 的几乎所有内容。

如果需要,您可以使用模板,这只是基本的 Drupal 主题,但我建议不要这样做。如果您为所有元素创建了主题函数并使用它,那将更易于维护,您可以像 Drupal 那样循环遍历所有元素并渲染它们,而不必编辑每个您需要更改的模板文件形式。现在可能需要做更多的工作,但这项工作有回报:更干净、更可维护的代码。

在代码中,它看起来像这样:

$form['item'] = array(
    ...
    '#theme' => 'theme_function',
);

这样做,元素将使用“theme_function”呈现。你可以看到一个这样的textfields 主题函数的例子。

于 2010-05-08T15:31:22.027 回答