我使用自定義模塊攔截表單提交,然後cURL將數據提交給第三方網站(在這種情況下,Pardot ...但我在其他方面得到了相同的結果像Marketo一樣的CRM)。使用cURL的Drupal鉤子webform提交兩次
這一切正常,數據已正確提交,但Drupal提交了兩次。我在Drupal之外嘗試了相同的cURL函數,它只發送一次,所以在Drupal中有一些事情導致這個函數運行兩次,我猜想。
任何人都知道爲什麼會發生這種情況?謝謝!
更新:因此,我做了一些更具體的測試,無論是表單數量還是指定單一表單......它總是提交兩次。
function hook_form_alter(&$form, &$form_state, $form_id) {
if (strstr($form['#form_id'], 'webform_client_form_')) {
array_unshift($form['#submit'], 'hook_pardot_submit');
}
}
/**
* Send post data to pardot via curl
*/
function hook_pardot_submit($form, &$form_state) {
// Values sent from form
$values = $form_state['values']['submitted'];
if (! function_exists('curl_init')) {
error("Curl is not setup on this PHP server and is required for this script.");
}
//Open cURL connection
$ch = curl_init();
if (curl_error($ch) != "") {
die("Error: $error");
}
// Submit data to pardot
curl_setopt($ch, CURLOPT_URL, "http://mypardoturl.com");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($values,'', '&'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
//Execute pardot PHP cURL
$result = curl_exec($ch);
//close cURL connection
curl_close($ch);
}
非常感謝...你剛剛救了我的一天! –