Рейтинг:-1

Как изменить список доступных стран, предоставленных коммерцией/парнями

флаг om

Мне нужно изменить список стран, которые отображаются в веб-форме. При этом используется виджет, работающий от модуля Address, работающего от библиотеки commerceguys/addressing.

Согласно документации для Drupal/Commerce, это можно сделать с помощью подписчика на событие.

Вы можете изменить список доступных стран для списка выбора, подписка на AddressEvents::AVAILABLE_COUNTRIES

На самом деле в модуле Address есть пример кода. Это не должно быть так сложно, верно?

Вопрос в том; когда событие срабатывает? Я нахожусь на странице, которая создала раскрывающееся меню со списком стран, явно созданным модулем «Адрес». Но событие никогда не срабатывает (см. вывод веб-профилера ниже).

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

Я в значительной степени скопировал код в модуле, используемом в качестве теста. Но не повезло, что событие произошло. Так;

  1. У кого-нибудь есть опыт и, надеюсь, успех в настройке списка доступных стран.
  2. Любые предложения по определению того, когда событие должно срабатывать

Дополнительное примечание к № 2. Глядя на черта, я вижу, где он «должен срабатывать», но какая страница/конечная точка вызовет это?

флаг cn
Пожалуйста, следуйте общему правилу: один вопрос в сообщении. В общем, если модуль включает пример кода, вы можете ожидать, что он будет работать; если это не работает, вы должны показать свой код при публикации здесь и описать, что вы изменили в образце. Мое первоначальное предположение заключалось в том, что вы неправильно назвали файл, поэтому он не подхватывается, но без публикации кода это невозможно сказать.
флаг cn
Без обид. Я сделал свой комментарий, основываясь на том факте, что вы закончили свой пост пронумерованным списком пунктов, которые могут вызвать открытое обсуждение, например, вопросом: «Как я могу определить, когда событие должно срабатывать?» - это другой вопрос, чем "Как изменить доступные страны в веб-форме?"
Рейтинг:0
флаг om

Вот ответ. Услуги декораторов

Что нужно сделать, так это дополнить/изменить поведение одного метода в сервисе address.country_repository. Конкретно \Drupal::service('address.country_repository')->getList();

Услуги декораторов от Symfony делает именно это — позволяет базовому классу сохраняться, но предоставляет возможность добавлять или изменять поведение методов внутри класса.

Рейтинг:0
флаг om

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

Веб-форма особенная, она использует элемент адреса напрямую, поэтому событие (который зависит от типа поля) не запускается. В таком случае вы будете необходимо переопределить репозиторий страны

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

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