我注意到,在您的表单主题文件,无论-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($形式)?提交,验证等会好吗?

有帮助吗?

解决方案

您要的那行,使尚未呈现所有的一切形式的项目。这很可能会一直在表中包括令牌成为形式的唯一ID。没有它的形式无法验证。如果去掉这可能导致了很多麻烦。

如果你想改变你应该使用形式 hook_form_alter() 。它可以让你基于表单的ID删除/添加/修改表单项目。这是Drupal的方式,因为它允许藏汉需要在其他模块改变形式。

其他提示

那么,什么主题,你正在使用似乎是有点扭曲,因为每一行代码,你上面列出的不应该是在主题化层。

但是,为了回答你的问题,消除drupal_render($form)可能会导致你的整个形式显示不出来。所以,不,提交和验证和这样是行不通的,而形式甚至可能不会在页面上浏览器中呈现在所有的时候出现。

在简短的答案肯定是否定的,你不能忽略drupal_render($形式),因为它包含表格的正确处理重要信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top