【问题标题】:Problem with Webform Mail Chimp on Drupal 8.7.8Drupal 8.7.8 上的 Webform Mail Chimp 问题
【发布时间】:2020-02-20 01:51:51
【问题描述】:

最近我们更新了一个使用 Drupal 8 制作的网站。更新是从核心 8.6 到 8.7.8,同时更新了所有模块。这些模块包括 WebformWebform Mailchimp

之后,一些表单在提交表单后开始显示警告。 发送电子邮件并保存表单数据。

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

完整的错误详情可以在这里查看:https://prnt.sc/pn76pv

我是 Drupal 的新手,所以我认为我不应该进入源文件并自己进行更改。有关如何解决此问题的任何建议?

感谢您的帮助

【问题讨论】:

标签: drupal drupal-8 drupal-webform


【解决方案1】:

从错误信息中,我们可以看到strlen()接收的是一个数组而不是一个字符串:

strlen() 期望参数 1 是字符串,数组在 [...] WebformMailChimpHandler->postSave() 中给出 (第 320 行 [...])

在这个模块的Line 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

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 在你的模块更改钩子中实际上是一个字符串数组(看起来一切都很好),这意味着另一个贡献模块在之后你的(@see 模块优先级) ) 导致问题。

【讨论】:

  • 你是对的。几个小时后,我在 Drupal 专家的帮助下修复了这个错误。并且它在您提到的确切行中并进行更改
猜你喜欢
  • 2017-05-17
  • 2021-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
  • 1970-01-01
  • 2015-02-25
相关资源
最近更新 更多