2016-04-13 3 views
0

В настоящее время я являюсь простой формой подписки на рассылку новостей в нижнем колонтитуле нашего веб-сайта только с текстовым полем электронной почты. Мы хотим знать, на какой языковой версии наши подписчики заполняют нашу форму. (домен.com/ nl /. de /. это и т.п.).MailChimp API & AJAX добавляет скрытое поле

Я добавил скрытое поле, которое получает значение текущего языка.

<li> 
    <label for="footer-newsletter-input"><?php __("nav.newsletter.youremail"); ?></label> 
    <input type="text" id="footer-newsletter-input" class="font-MuseoSans100 validate" data-validationtype="email"> 
    </li> 

    <li class="hidden"> 
    <input type="text" id="footer-newsletter-input-language" class="font-MuseoSans100" value="<?php echo isset(Language::$short) ? Language::$short : 'en'; ?>"> 
    </li> 

Это работающий.

Наш текущий initNewsletter: функция() выглядит следующим образом:

initNewsletter: function() { 

     $(document).on('submit', '#newsletter_form', function(e){ 

      e.preventDefault(); 
      $('#newsletter-holder p.error').hide(); 

      if($(this).hasClass('loading')) return; 

      var form = $(this), 
       valid = checkForm(form), 
       email = $('#footer-newsletter-input').val(); 
      ??? shortlangcode = $('#footer-newsletter-input-language'); ??? 



      if(valid) { 

       form.addClass('loading'); 

       $.ajax({ 
        type: 'post', 
        url: '/support/subscribe', 
        data: 'email=' + email, ?????? 
        success: function(data){ 

         form.removeClass('loading'); 

         data = $.parseJSON(data); 
         if(data.status && data.status === 'error') { 
          $('#newsletter-holder').append('<p class="error font-MuseoSans100">' + window.globalTranslations.newsletter_error + '</p>'); 
         } else { 
          $('#newsletter-inputs').fadeOut(150, function(){ 
           $('#newsletter-thanks').show(); 
          }); 

         } 


        }, 
        error: function(){ 
         $('#newsletter-holder').append('<p class="error font-MuseoSans100">' + window.globalTranslations.newsletter_error + '</p>'); 
        } 
       }); 

      } 

     }); 

    }, 

И контроллер выглядит следующим образом:

public function subscribe() { 

    // API KEY 
    $apikey = '????'; 
    $listid = '????'; 

    $MailChimp = new MailChimp($apikey); 
    $result = $MailChimp->call('lists/subscribe', array(
     'id'    => $listid, 
     'email'    => array('email'=>$_POST['email']), 
     //'merge_vars'  => array('FNAME'=>$_POST['fname'], 'LNAME'=>$_POST['lname']), 
     'double_optin'  => true, 
     'update_existing' => true, 
     'replace_interests' => false, 
     'send_welcome'  => false, 
    )); 

    echo json_encode($result); 

} 
+0

В чем проблема? – TooMuchPete

+0

Я не могу понять, как отправить значение ввода с id = "footer-newsletter-input-language" на mailchimp. Думаю, мне нужно объявить значение в initNewsletter: function() и отправить его с помощью сообщения Ajax. (Я добавил ??? на месте, я думаю, что его нужно добавить) И тогда контроллер нужно обновить, чтобы включить merge_vars => ('CNTRCODE' => $ _POST ['cntrcode']), – m00n

ответ

0

Вам нужно добавить параметр name в форму поля , Так что это может стать это:

<input type="text" id="footer-newsletter-input-language" name="language" class="font-MuseoSans100" value="<?php echo isset(Language::$short) ? Language::$short : 'en'; ?>"> 

Тогда в контроллере, то доступ к нему, как это:

$result = $MailChimp->call('lists/subscribe', array(
    'id'    => $listid, 
    'email'    => array('email'=>$_POST['email']), 
    'merge_vars'  => array('CNTRCODE'=>$_POST['language']), 
    'double_optin'  => true, 
    'update_existing' => true, 
    'replace_interests' => false, 
    'send_welcome'  => false, 
)); 

Вы должны убедиться, что поле слияния с именем CNTRCODE создается в MailChimp для этого список.

+0

Добавлено линии, но, похоже, не работают. Я думаю, мне нужно добавить язык в initNewsletter: function(), чтобы объявить его и отправить. – m00n

+0

Что значит «похоже, не работает»? Пользователь подписывается вообще? CNTRCODE отсутствует? Вы еще не просмотрели необработанный запрос/ответ? – TooMuchPete

Смежные вопросы