Рейтинг:1

Как программно создать заказ, не удаляя профиль?

флаг eg

Я последовал за Заказы чтобы написать следующий код.

$order = \Drupal\commerce_order\Entity\Order::create([
  'тип' => 'custom_order_type',
  'состояние' => 'черновик',
  'mail' => '[email protected]',
  'ид' => 1,
  'ip_адрес' => '127.0.0.1',
  'номер_заказа' => '6',
  'billing_profile' => $профиль,
  'store_id' => $store->id(),
  'order_items' => [$order_item],
  'размещено' => время(),
]);

$профиль является профилем пользователя.

Затем я программно меняю статус заказа на место с $order->getState()->applyTransitionById('place');.

Заказ размещен, и все выглядит нормально, за исключением того, что адресная книга пользователя становится пустой. Кажется, я пропустил шаг.

Есть ли способ сохранить адресную книгу при оформлении заказа?

Рейтинг:3
флаг it

Профиль не удаляется - он просто становится "принадлежащим" заказу. Это происходит в Порядок:: предварительное сохранение () где uid профиля установлен на 0. Это гарантирует, что клиент не сможет использовать интерфейс адресной книги для редактирования профиля, на который ссылается заказ.Дополнительную информацию о том, как адресная книга в Commerce 2.x работает в отношении копирования профилей, см. в следующей статье:

https://www.centarro.io/blog/understanding-drupal-commerce-2x-адресная книга

Решение состоит в том, чтобы вы сами создали копию профиля, установили для его uid значение 0 и ссылались на этот профиль из своего заказа, а не на исходный.

Aves2432 avatar
флаг eg
Спасибо, это решает мою проблему

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

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