2014-03-31 195 views
2

我正在使用drupal实体表单模块,我已经成功实现了它的用户界面部分。但是,当我试图挂钩实体形式提交,我无法得到任何东西..Drupal EntityForm挂钩

我试过hook_form_alter(),hook_form_FORM_ID_alter(),但没有。 有没有人实现过它......?我已经尝试了所有如下: -

function form_submit_igs_entity_views_field_handlers_alter(array &$field_handlers){ 
    echo "pankaj"; 
} 

function _form_entityform_settings_alter(&$form, &$form_state, $form_id) { 
    echo "pankaj"; 
} 

function form_submit_igs_entity_presave($entity, $type){ 
    echo "pankaj"; 
} 

function form_submit_igs_node_view_alter(&$build){ 
    echo "pankaj"; 
} 
function form_submit_igs_field_attach_submit($entity_type, $entity, $form, &$form_state){ 
    echo "pankaj"; 
} 

function form_submit_igs_form_alter(&$form, &$form_state, $form_id){ 
    echo "pankaj"; 
} 

回答

1

以下是我想通了: 我写它看起来像这样 function hook_form_alter()(&$form, &$form_state, $form_id) { dpm($form); } 一个hook_form_alter()函数,我可以在现有的形式得到formID &然后得到该函数的适当名称。

注意,你也可以做:

function hook_form_entityform_edit_form_alter(&$form, &$form_state, $form_id) { dpm($form); } 要改变只有实体形式。

在这两种情况下hook都将被您的模块名称替换。安装devel模块让dpm()函数可以正常工作,而不会引发错误。

希望这可以帮助你找出你的问题。

+0

OOOHHHH,您使用的EntityForm模块,不是任何实体。 – doublejosh

0

不知道你要存档什么,你的描述不是很好,但无论如何。 要更改您需要使用的任何实体表单,例如entityform_forms(),$ machine_name。 '_entityform_edit_form'作为表单ID,所以你的函数看起来像这样some_func_form_YOUR_ENTITY_FORM_NAME_entityform_edit_form_alter()

0

我已经使用了hook_form_FORM_ID_alter(),您必须使用您的特定entityform的机器名称加上机器名后的_entityform。例如,如果你entityform的机器名是“myentityform”和你的模块名称为“MyModule的”,该hook_form_FORM_ID_alter将是:

/** 
* Implements hook_form_FORM_ID_alter(). 
*/ 
function mymodule_form_myentityform_entityform_edit_form_alter(&$form, &$form_state, $form_id) 
{ 
    // Your codes 
}