我想根据用户输入的邮政编码更改电子邮件地址。 我的代码如下所示:
function my_webform_tracker_webform_submission_render_alter(&$renderable) {
$node_id = (int)$renderable['#node']->nid;
if ($node_id == 257) {
$postal_code = (int)$renderable['#submission']->data[5][0];
if($postal_code >= 14000 && $postal_code <= 14990) {
$renderable['#email'][email] = "thisemailid@mydomain.com";
$renderable['#node']->webform['emails'][1]['email'] = "thisemailid@mydomain.com";
$renderable['#node']->webform['emails'][2]['email'] = "thisemailid@mydomain.com";
//print "<pre>"; print_r($renderable); exit;
}
}
}
我尝试了很多,但电子邮件ID似乎没有改变。
请帮我解决这个问题。
答案 0 :(得分:0)
用户在屏幕上输入邮政编码后,您是否尝试以dinamycally方式更改电子邮件? 如果是这样,您需要在字段邮政编码(检测更改)上进行ajax调用,以重新加载您的网络表单的字段电子邮件。
此外,我将使用webform上的hook_form_alter(hook_form _&#34; webform id&#34; _alter())而不是你正在使用的钩子
答案 1 :(得分:0)
我想通了,实际上我使用错误的钩子来完成任务。正确的应该是“hook_webform_submission_presave”。所以我的代码看起来像,
function my_webform_tracker_webform_submission_presave($node, &$submission) {
$postal_code = (int)$renderable['#submission']->data[5][0];
if($postal_code >= 14000 && $postal_code <= 14990) {
$node->webform['emails'][1]['email'] = "thisemailid@mydomain.com";
$node->webform['emails'][2]['email'] = "thisemailid@mydomain.com";
}
}
谢谢大家的帮助!!