改变Webform" To Email Address"基于Drupal 7中使用PHP的一些值

时间:2015-10-21 10:00:13

标签: drupal drupal-webform

我想根据用户输入的邮政编码更改电子邮件地址。 我的代码如下所示:

    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似乎没有改变。

请帮我解决这个问题。

2 个答案:

答案 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";      
      }
    }

谢谢大家的帮助!!