Проблема с Webform Mail Chimp на Drupal 8.7.8

Проблема с Webform Mail Chimp на Drupal 8.7.8

23.10.2019 09:43:27 Просмотров 53 Источник

Недавно мы обновили сайт, созданный с помощью Drupal 8. Обновление было от ядра 8.6 до 8.7.8, в то же время все модули также были обновлены. Среди этих модулей были Webform и Webform Mailchimp .

После этого, некоторые формы начали показывать предупреждение после отправки формы. Электронное письмо отправляется, и данные формы сохраняются.

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

Полную информацию об ошибке можно посмотреть здесь: https://prnt.sc/pn76pv

Я новичок в Drupal, поэтому я думаю, что не должен заходить в исходный файл и вносить изменения самостоятельно. Любые рекомендации о том, как это исправить?

Спасибо за любую помощь

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/58529236/problem-with-webform-mail-chimp-on-drupal-8-7-8#comment103387508_58529236
Последняя версия модулей webform_mailchimp, похоже, изменила конкретную строку, которая дает вам ошибку . Лучшим местом для запроса об этой ошибке будет очередь вопросов для этого конкретного модуля .

Ответы - Проблема с Webform Mail Chimp на Drupal 8.7.8 / Problem with Webform Mail Chimp on Drupal 8.7.8

Является ответом!
EricLavault

25.10.2019 02:15:59

Из сообщения об ошибке видно, что 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 ?

Мы можем видеть, что он загружен из конфигурации, а затем изменен модулями, которые реализуют некоторые крючки alter :

$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'].

Затем вы можете увидеть, что происходит, и в конечном итоге исправить $mergevarsв своем собственном hook_alter :

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 в одном из крючков alter. Примечание переменные передаются по ссылке.

Если вы обнаружите, что $mergevarsна самом деле является массивом строк (кажется, все хорошо) внутри вашего модуля alter hook, это означает, что другой модуль contrib, действующий после вашего (@see module priority), вызывает проблему.

https://stackoverflow.com/questions/58529236/problem-with-webform-mail-chimp-on-drupal-8-7-8/58557515#comment103445395_58557515
Вы правы. Несколько часов спустя мне удалось исправить ошибку с помощью специалиста Drupal. И это в точной строке и изменении, о которых вы упомянули
Помочь в развитии проекта:
Закрыть X