0

我注意到在您的表单主题文件中,whatever-form.tpl.php 中,当您省略时

<?php drupal_render($form); ?> 

呈现的表单的唯一部分是您指定的 - 所以我也可以省略所有这些行:

<?php $form['title']['#access'] = FALSE; ?>
<?php $form['body']['#access'] = FALSE; ?>
<?php $form['menu']['#access'] = FALSE; ?>
<?php $form['revision_information']['#access'] = FALSE; ?>
<?php /* ... etc ... */ ?>

我想这样做,以便当我安装模块(比如书籍)时,我不必担心回到我所有的自定义表单然后添加相应的“隐藏此部分!” 线:

<?php $form['book']['#access'] = FALSE; ?>

可以省略 drupal_render($form) 吗?提交,验证等会好吗?

4

3 回答 3

2

您要求的行会呈现所有尚未呈现的表单项。这很可能总是包含表单标记和表单的唯一 ID。没有它,表单无法验证。如果删除,这可能会导致很多麻烦。

如果你想改变你应该使用的表格hook_form_alter()。它允许您根据表单 ID 删除/添加/更改表单项。这是 Drupal 的方式,因为它允许其他模块在需要时更改表单。

于 2009-12-23T04:51:56.697 回答
1

好吧,无论您使用什么主题似乎都有些古怪,因为您上面列出的每一行代码都不应该在主题层中。

但要回答您的问题,删除drupal_render($form)可能会导致您的整个表单不显示。所以不,提交和验证等将不起作用,并且当在浏览器中呈现时,表单甚至可能不会显示在页面上。

于 2009-12-22T18:51:59.353 回答
1

简短的回答肯定是否定的,您不能省略 drupal_render($form),因为它包含正确处理表单所必需的信息。

于 2009-12-23T03:22:25.343 回答