【问题标题】:hook_form_FORM_ID_alter function in DrupalDrupal 中的 hook_form_FORM_ID_alter 函数
【发布时间】:2011-11-04 13:12:33
【问题描述】:

我想通过创建自定义模块来覆盖表单。但因此,我需要在函数中保留我的表单 ID。

Drupal.org 提到了 hook_form_FORM_ID_alter(&$form, &$form_state, $form_id) 函数,但是当我将它应用到我的表单时,它没有响应。我使用以下语句时是否有语法错误?:

function redactie_omgeving_fiche_node_form__form_alter(&$form, $form_state, $form_id) {
    echo(var_dump('ONZE redactie_omgeving__fiche_node_form__form_alter'));
}

这是我的表格:

<form class="node-form node-fiche-form" enctype="multipart/form-data" action="/node/1/edit" method="post" id="fiche-node-form" accept-charset="UTF-8">

【问题讨论】:

    标签: forms drupal


    【解决方案1】:

    确保您拥有正确的表单 ID 的一个小技巧是首先使用 hook_form_alter() 获取表单 ID,然后使用 hook_form_FORM_ID_alter()。例如,使用:

    function YOURMODULE_form_alter(&$form, &$form_state, $form_id) {
      drupal_set_message($form_id);
    }
    

    在当前页面上查看所有表单 ID 的 Drupal 消息。获得正确的 ID 后,将其放入 hook_form_FORM_ID_alter()。试试看,确保您使用的是正确的表单 ID。

    【讨论】:

    • 绝招!我需要用我自己的模块命名来替换hook_form吗?
    • 也就是说function hook_form_fiche_node_form_alter(&amp;$form, &amp;$form_state, $form_id) { echo 'ok!'; } 应该可以工作吗?
    • 是的,但是将“hook”替换为您的模块名称而不是“hook_form”。所以function MODULENAME_form_fiche_node_form_alter(&amp;$form, &amp;$form_state, $form_id) { echo 'ok!'; }
    • 你是我的英雄!!感谢一百万!
    猜你喜欢
    • 1970-01-01
    • 2021-08-18
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多