Как сделать, чтобы при оформлении покупки пользователю отображались не пустые поля для заполнения, а ранее заполненный адрес?

Главные вкладки

Аватар пользователя DD 85 DD 85 8 сентября 2019 в 0:53

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

Лучший ответ

Аватар пользователя ivnish ivnish 8 сентября 2019 в 7:19

Загружайте адрес указанный при регистрации в поле адреса при оформлении покупки

Комментарии

Аватар пользователя ivnish ivnish 8 сентября 2019 в 10:51

Чтобы ответить на этот вопрос, сначала нужно узнать:

1) Как реализован ввод адреса при регистрации
2) Какую систему для коммерции вы используете. Commerce, Basic Cart, или, может быть, самопис

Аватар пользователя gun_dose gun_dose 8 сентября 2019 в 11:55

В коммерс адрес - это поля профиля. Не учётки, а профиль, создаваемого через модуль Profile. Альтерить форму чекаута не так то просто, т.к. профиль там - это один элемент формы. Надо искать либо контриб, либо информацию о том, как это должно делаться.

Аватар пользователя adano adano 8 сентября 2019 в 14:01

Из коробки в коммерсе все есть.
В профиле - вывод поля адрес (регистрация/edit), настройки коммерс...
И все автоматом будет подставляться.

Через кастом, тоже не сложно все реализовать (form_alter + #default_value)

Аватар пользователя VasyOK VasyOK 8 сентября 2019 в 14:42

В Уберкарте тоже из коробки все есть.
Вопрос только в том: как заставить пользователей регистрироваться либо заходить в магазин под своей учеткой.

Аватар пользователя DD 85 DD 85 8 сентября 2019 в 22:52

Похоже только gun_dose в теме.
Впрочем, оказалось, что в последней версии Commerce 8.x-2.14 эта проблема была исправлена. Об этом здесь https://www.drupal.org/project/commerce/issues/2844920
Да, ещё нужно дать права для пользователей на просмотр и возможно редактирование собственных профилей.
В этой версии Commerce на странице редактирования профиля появляется галочка о том, что профиль используется в Commerce. Кстати галочка устанавливается сама после обновления модуля, и она почему-то погашена, то есть не съёмная.

В общем, обновление модуля с Commerce 8.x-2.13 до Commerce 8.x-2.14 решило проблему.

Но тут у меня появился ещё один вопрос!
Оказалось, что модуль Commerce не отображается на странице /admin/reports/updates и соответственно не проверяется на наличие доступных обновлений. Почему? Как исправить?

Аватар пользователя gun_dose gun_dose 8 сентября 2019 в 23:14

У коммерса есть зависимости, которые ставятся только композером. Скорее всего, поэтому через админку его и нельзя обновить.

Аватар пользователя gun_dose gun_dose 9 сентября 2019 в 14:49

Я не знаю. Вообще, если пользоваться гитом и настраивать всё, как принято, то при обновлении через админку изменения не попадут в репозиторий. А это как-то не очень.

Аватар пользователя VasyOK VasyOK 9 сентября 2019 в 15:21

Допустим обновлю модули из админки. Потом нажму git add .
Неужели не попадет в репозиторий?
Или когда через Композер обновляешь он что-то Гиту сообщает?

Аватар пользователя ivnish ivnish 9 сентября 2019 в 15:23

Да, новая версия модуля прописывается в composer.lock файле, чтобы потом на проде установиться после команды composer install

Аватар пользователя VasyOK VasyOK 9 сентября 2019 в 16:29

Понятно.
Т.е. все таки Композер Гиту при обновлении модуля что-то сообщает.
А если администратор сайта по незнанию все таки обновит, то что?

Аватар пользователя ivnish ivnish 9 сентября 2019 в 16:33

Не что-то, а новую версию в файле composer.lock, я же писал выше.

Если администратор обновит что-то на проде, то бить его палкой по рукам. Если обновит на локалке, то при следующем деплое на прод этот модуль на проде не обновится, да и всё. Нужно будет всё таки обновить его как положено через composer.

Аватар пользователя VasyOK VasyOK 9 сентября 2019 в 17:23

Понял. Забыл что контриб модули в гитигноре.
А если обносит на продакшене? Должна же быть composer команда, которая обновляет все lock-и?