簡體   English   中英

Drupal 8.7.8 上的 Webform Mail Chimp 問題

[英]Problem with Webform Mail Chimp on Drupal 8.7.8

最近我們更新了一個使用 Drupal 8 制作的網站。更新是從核心 8.6 到 8.7.8,同時更新了所有模塊。 這些模塊包括WebformWebform Mailchimp

之后,部分 forms 在提交表單后開始顯示警告。 發送電子郵件並保存表單數據。

strlen() expects parameter 1 to be string, array is given in Drupal\webform_mailchimp\Plugins\WebformHancler\WebformMailChimpHandler->postSave()

完整的錯誤細節可以在這里看到: https://prnt.sc/pn76pv

我是 Drupal 的新手,所以我認為我不應該在源文件中使用 go 並自己進行更改。 我怎樣才能解決這個問題?

從錯誤消息中,我們可以看到strlen()接收的是數組而不是字符串:

strlen() 期望參數 1 是字符串,數組在 [...] WebformMailChimpHandler->postSave() 中給出([...] 的第 320 行

在這個模塊的第 320 行,我們調用了mailchimp_subscribe()

mailchimp_subscribe($configuration['list'], $email, array_filter($mergevars, 'strlen'), $configuration['interest_groups'], $double_optin);

該錯誤是由作為第三個參數傳入的內容引起的: array_filter($mergevars, 'strlen') ,意思是$mergevars - 應該是一個由strlen過濾的字符串數組 - 包含一個數組而不是字符串在某一點。

如何修復$mergevars

我們可以看到它是從配置中加載的,然后由實現了一些更改鈎子的模塊進行更改:

$mergevars = Yaml::decode($configuration['mergevars']);

// Allow other modules to alter the merge vars.
// @see hook_mailchimp_lists_mergevars_alter().
$entity_type = 'webform_submission';
\Drupal::moduleHandler()->alter('mailchimp_lists_mergevars', $mergevars, $webform_submission, $entity_type);
\Drupal::moduleHandler()->alter('webform_mailchimp_lists_mergevars', $mergevars, $webform_submission, $this);

首先,您可能需要檢查$configuration['mergevars']是否設置正確。

然后,您可以看到正在發生的事情並最終在您自己的 hook_alter 中修復$mergevars mergevars:

function MODULE_mailchimp_lists_mergevars_alter(&$mergevars, &$webform_submission, &$entity_type) {
  # debug/fix $mergevars
}

function MODULE_webform_mailchimp_lists_mergevars_alter(&$mergevars, &$webform_submission, &$WebformMailChimpHandler) {
  # debug/fix $mergevars
}

該問題可能是由於其中一個更改掛鈎中的錯誤mergevars更改引起的。 注意變量是通過引用傳遞的。

如果您發現$mergevars實際上是模塊更改鈎子中的一個字符串數組(看起來一切都很好),則意味着在您的模塊之后執行的另一個 contrib 模塊(@see 模塊優先級)導致了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM