2009-12-22 109 views
0

我注意到,在您的表单主题文件,无论-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 ... */ ?> 

我想这样做,所以,当我安装的模块(比如书籍),我不担心回去我所有的自定义表单,然后加入相应的“隐藏这个部分!” line:

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

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

回答

2

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

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

1

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

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

1

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

相关问题