Рейтинг:0

Профили клиентов не могут содержать более 1 значения, даже если разрешено несколько профилей для каждого пользователя.

флаг in

У меня есть собственный API, который создает новые Покупатель профили с разными адресами/электронной почтой:

$profileStorage->создать([
        'тип' => 'клиент',
        'uid' => $this->currentUser->id(),
        'статус'=> 1,
        'адрес' => $addressData
])
$профиль->setDefault(true);
$профиль->сохранить();

Он работает, создавая эти профили и прикрепляя их к текущему пользователю. Однако после того, как я попытаюсь изменить поля учетной записи пользователя или просто использовать $пользователь->проверить() Я получаю эту ошибку:

«customer_profiles: профили клиентов: это поле не может содержать более 1 значения».

Однако для типа профиля клиента выбраны «Разрешить несколько профилей для каждого пользователя» и «Профили этого типа представляют профили клиентов Commerce».

Так было в Drupal 8 и 9.

введите описание изображения здесь

ОБНОВИТЬ:

Кажется, эта ошибка действительно возникает в $entity->проверить(), не на спасти()

введите описание изображения здесь

Это содержимое core.entity_form_display.profile.customer.default.yml

UUID: xxx7f0e2-d809-4d2b-9388-af399c98xxxx
код языка: en
статус: правда
зависимости:
  конфигурация:
    - поле.поле.профиль.адрес.клиента
    - field.field.profile.customer.field_email
    - профиль.тип.клиент
  модуль:
    - адрес
  принудительно:
    модуль:
      - commerce_order
_основной:
  default_config_hash: xxxxVkJkUSPhil9xxxxdTivMqxCUloT_71AHWxxxx
идентификатор: profile.customer.default
targetEntityType: профиль
пакет: клиент
режим: по умолчанию
содержание:
  адрес:
    тип: address_default
    вес: 0
    регион: содержание
    настройки: {  }
    третьи_стороны_настройки: { }
  field_email:
    тип: электронная почта_по умолчанию
    вес: 1
    регион: содержание
    настройки:
      заполнитель: ''
      размер: 60
    третьи_стороны_настройки: { }
скрытый: {  }

и содержание profile.type.customer.yml

UUID: xxxx4f32-xxxx-xxxx-xxxx-bd10470bxxxx
код языка: en
статус: правда
зависимости:
  принудительно:
    модуль:
      - commerce_order
третьи_стороны_настройки:
  коммерческий_заказ:
    customer_profile_type: правда
_основной:
  default_config_hash: xxxxAQDUxxxxwavxxxxlcbJx9xxxxFtCq8l73Axxxx
идентификатор: клиент
этикетка: Клиент
display_label: 'Информация о клиенте'
несколько: правда
регистрация: ложная
роли:
  аутентифицированный: аутентифицированный
  подтверждённая_почта: подтверждённая_почта
  подтверждённый_cc: подтверждённый_cc
allow_revisions: ложь
новая_ревизия: ложь
Рейтинг:0
флаг it

Этот параметр означает, что у клиента может быть несколько профилей этого типа, назначенных его uid, а не то, что каждое поле ссылки на профиль само по себе может использоваться для ссылок на несколько значений. Тем не менее, я не знаю о поле в Commerce Core, которое называется профили_клиентов. Это что-то заказное? Возможно, вам просто нужно обновить его определение, чтобы иметь возможность помещать в него несколько ссылок.

флаг in
значит я неправильно создаю/прикрепляю Профиль? Моя цель состоит в том, что «клиент может иметь несколько профилей этого типа, назначенных их uid».
флаг in
Кроме того, я думаю, что «customer_profiles» — это просто имя машины из создания типа профиля, называемого «Клиенты». Что именно вы предлагаете мне обновить?
флаг it
На вашем сайте есть поле «Профили клиентов». Откуда это пришло?
флаг in
Я разместил свои файлы yml, если это может помочь. Также обнаружено, что ошибка возникает при `$user->validate()`, а не `$user->save()`
флаг in
Также «Профили клиентов» — это «Тип профиля», а не поле, предоставленное Commerce: https://docs.drupalcommerce.org/commerce2/developer-guide/customers/profiles/profile-configuration — вместе с его «field_address». . Я добавил `field_email`.
флаг it
Хорошо. В этом случае я не понимаю сообщение об ошибке, которое указывает на то, что поле не проверяется должным образом. Я не уверен, что могу еще чем-то помочь.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.