我已经干了好几天了,但我终于觉得我可能找到了问题的一部分,maybe...but,我不知道怎么解决它。
我正在处理一个运行CiviCRM模块的Drupal站点。我有一个表单,在将数据保存到数据库之前,我希望在此表单上修改数据。因此,我一直在努力获取任何可用的CiviCRM挂钩。
我安装了civicrm_developer模块,这是对开发的一种补充,因为它用于帮助查看对象和其他变量。在模块的.module文件中,您可以看到所有的CiviCRM钩子函数,这些函数在模块中被用于dpm()
(传递给它们的任何变量)。
function civicrm_developer_civicrm_buildForm($formName, &$form){
drupal_set_message("hook_civicrm_buildForm called: formName is $formName");
dpm($form);
dpm($formName);
}
对于CiviCRM中可用的每个钩子,都没有包含或其他任何内容,只有钩子和打印变量。civicrm_developer模块确实按预期工作。在我正在使用的特定页面上,有一个CiviCRM表单,这个模块在该表单上打印一个填充的Krumo,这在Drupal中的一个变量dpm()
-ing中是预期的。
然而,试图制作一个使用一个或两个相同钩子的自定义模块,似乎永远无法获得相同的数据。我已经将代码从该模块(只有一个.module和.info文件)复制到我的自定义模块,并将钩子名称从"civicrm_developer“更改为"mymodule”。
因此,除了钩子名称之外,我的模块实际上是该模块的精确副本,它不会像启用civicrm_developer模块时那样在表单上生成Krumo。是的,我已经确保我的模块被启用了。
例如,这是前面写在我的自定义模块中的相同的函数。
function mymodule_buildForm($formName, &$form){
drupal_set_message("mymodule_buildForm called: formName is $formName");
dpm($form);
dpm($formName);
}
还值得一提的是,使用中的mymodule名称是该模块的唯一名称。它不匹配主题名称或任何可能导致名称冲突的东西,至少据我所知。
我不明白为什么相同的钩子在一个模块中工作,而在另一个模块中不工作。只是没有任何意义。
发布于 2018-09-25 12:45:40
Drupal中没有hook_buildForm()
钩子。您要实现的钩子是hook_civicrm_buildForm()
,因此要使它正常工作,您应该使用mymodule_civicrm_buildForm()
。
您可以始终使用hook_form_alter()
或更具体地说,使用hook_form_FORM_ID_alter()
对任何Drupal表单进行更改。
https://drupal.stackexchange.com/questions/269942
复制相似问题