我目前在我们网站的页脚中只有一个简单的简报订阅表单,只有一个电子邮件文本字段。我们想知道订阅者填写表格的语言版本。 (domain.com/nl /。 de /。 it 等)。
我添加了一个隐藏字段,可以获取当前语言的值。
<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:function()如下:
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 :(得分: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,
));
您必须确保在mailchimp中为该列表创建名为CNTRCODE的合并字段。