Drupal 7 - 节点形式 - dsm/dpm 不适用于自己的 validate/submit 函数
Drupal 7 - node form - dsm/dpm does not work with own validate/submit function
我想向我现有的节点表单添加自己的验证(或提交)handler/function。我试过乘法(如下),但它不能正常工作。
function MY_MODULE_form_alter(&$form, &$form_state, $form_id) {
$form['#validate'][] = 'MY_MODULE_handler';
//or
$form['actions']['submit']['#validate'][] = 'MY_MODULE_handler';
//or
$form['submit']['#submit'][] = 'MY_MODULE_handler';
//or
$form['#submit'][] = 'MY_MODULE_handler';
//or
array_unshift($form['#validate'], 'MY_MODULE_handler');
//or
$form['actions']['submit']['#submit'][]='MY_MODULE_handler';
}
但是 none 这些尝试似乎适用于我的处理程序:
function MY_MODULE_handler($form, &$form_state){
dsm($form);
dsm($form_state);
}
查看 form_alter
中的 $form
变量,我发现 $form['actions']['submit']['#submit']
和 $form['#validate']
已经有一个 submit/validate 处理程序。
但是如果我使用上面的示例之一,dsm
不会打印任何内容。此外,它不再打印(提交)确认!但是如果我使用
function MY_MODULE_handler($form, &$form_state){
die('Handler was hit');
}
我看到处理程序被击中了。
可能是什么原因?我需要处理程序读取两个表单字段并将它们保存在一个节点属性中。
正如@2pha 所建议的那样,我使用钩子 HOOK_node_presave 而不是额外的 validation/submit 处理程序,这使我能够解决我的问题(这是将表单中的值分配给一个节点属性,查看评论)。
我想向我现有的节点表单添加自己的验证(或提交)handler/function。我试过乘法(如下),但它不能正常工作。
function MY_MODULE_form_alter(&$form, &$form_state, $form_id) {
$form['#validate'][] = 'MY_MODULE_handler';
//or
$form['actions']['submit']['#validate'][] = 'MY_MODULE_handler';
//or
$form['submit']['#submit'][] = 'MY_MODULE_handler';
//or
$form['#submit'][] = 'MY_MODULE_handler';
//or
array_unshift($form['#validate'], 'MY_MODULE_handler');
//or
$form['actions']['submit']['#submit'][]='MY_MODULE_handler';
}
但是 none 这些尝试似乎适用于我的处理程序:
function MY_MODULE_handler($form, &$form_state){
dsm($form);
dsm($form_state);
}
查看 form_alter
中的 $form
变量,我发现 $form['actions']['submit']['#submit']
和 $form['#validate']
已经有一个 submit/validate 处理程序。
但是如果我使用上面的示例之一,dsm
不会打印任何内容。此外,它不再打印(提交)确认!但是如果我使用
function MY_MODULE_handler($form, &$form_state){
die('Handler was hit');
}
我看到处理程序被击中了。
可能是什么原因?我需要处理程序读取两个表单字段并将它们保存在一个节点属性中。
正如@2pha 所建议的那样,我使用钩子 HOOK_node_presave 而不是额外的 validation/submit 处理程序,这使我能够解决我的问题(这是将表单中的值分配给一个节点属性,查看评论)。