【问题标题】:Can I Omit <?php drupal_render($form); ?>我可以省略 <?php drupal_render($form); ?>
【发布时间】:2009-12-22 16:32:48
【问题描述】:

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

【问题讨论】:

    标签: drupal drupal-render


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-11
          • 1970-01-01
          相关资源
          最近更新 更多