我可以省略<! - ?php drupal_render($ form); ? - >

时间:2009-12-22 16:32:49

标签: drupal drupal-render

我注意到在你的表单主题文件中,what-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)?提交,验证等都可以吗?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

嗯,无论你使用什么主题似乎有点棘手,因为你上面列出的每一行代码都不应该在主题层中。

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

答案 2 :(得分:1)

简短的回答绝对不是,你不能省略drupal_render($ form),因为它包含正确处理表格所必需的信息。