Рейтинг:0

Связанные токены для настраиваемых сущностей, на которые есть ссылки

флаг cn

У нас есть два пользовательских объекта: парламент_период (могут быть выборы или законодательный орган) и парламент. А парламент_период сущность имеет ссылку на парламент юридическое лицо. В Голосование узел, у нас есть поле ссылки на сущность для парламент_период объекты, пакет которых законодательный орган (field_legislature). (Речь идет об опросах, в которых принимают участие депутаты.) Часть псевдонима пути для Голосование узлы должны быть содержимым url_basis поле из парламент сущности.

я использовал [узел:field_legislature:entity:parliament:entity:url_basis]/[node:field_legislature:entity:identifier]/poll/[node:title] как шаблон Pathauto. Некоторое время он работал, но перестал работать из-за [узел: field_legislature: сущность: парламент: сущность: url_basis] токен.

Я не уверен, что я изменил, чтобы он перестал работать. в крюк_токены () реализации я использовал следующий код.

if ($type == 'parliament_period' && !empty($data['parliament_period'])) {
  /** @var \Drupal\pw_basic\Entity\ParliamentPeriod $parliamentPeriod */
  $parliamentPeriod = $data['parliament_period'];
  if ($parliament_tokens = $token_service->findWithPrefix($tokens, 'парламент')) {
    $replacements += $token_service->generate('parliament', $parliament_tokens, ['parliament' => $parliamentPeriod->getParliament()], $options, $bubbleable_metadata);
  }
}

Это позволяет использовать цепочку для замены любых токенов, связанных с парламент сущность, когда парламент_период сущность дается (например, в [узел: field_legislature: сущность]). крюк_токены () правильно вызывается для парламент токены сущности, но имя токена, отправленного на крюк_токены () является объект: url_basis, нет url_basis.

С другой стороны, [узел:field_legislature:entity:parliament:url_basis] не допускается, без юридическое лицо часть.

Должен ли я удалить юридическое лицо: часть, прежде чем я позвоню $token_service->генерировать()для всех идентифицированных токенов или есть лучший способ связать токены для пользовательских сущностей?

apaderno avatar
флаг us
*объект* не должен быть удален.Это код, обрабатывающий токены для объекта *parliament*, должен обрабатывать его, а не код, обрабатывающий токены для объекта *parliament_period*. Мы не можем сказать вам, почему код работал раньше и не работает сейчас, не видя код, который вы использовали раньше, и код, который вы используете сейчас. Нам также нужно увидеть полный код `hook_tokens()`, а не только несколько строк.
apaderno avatar
флаг us
Кроме того, модуль Token или другой модуль, реализующий токены, был удален или установлен до того, как код перестал работать?
флаг cn
Мне интересно, зачем вообще нужен специальный токен для этого? Предполагая, что `parliament` является именем поля ссылки на сущность в типе сущности `parliament_period`, `[node:field_legislature:entity:parliament:entity:url_basis]` уже будет доступно без дополнительного кода.
Tobias Krause avatar
флаг cn
@Clive Это предположение верно: «парламент» здесь, в этом токене, — это имя поля в сущности «parliament_period», которое ссылается на сущность парламента. Так вы имеете в виду, что это уже должно работать? Это сработало, как я уже упоминал, и я не нашел никаких изменений, поэтому я запутался: а) почему это сработало и б) почему теперь это больше не работает. Можете ли вы сказать мне, где модуль Token обрабатывает эту цепочку?
4uk4 avatar
флаг cn
token.tokens.inc > [`field_tokens()`](https://git.drupalcode.org/project/token/-/blob/8.x-1.x/token.tokens.inc#L1677) - " Реализует hook_tokens() от имени field.module."
Tobias Krause avatar
флаг cn
Спасибо @ 4k4 - я действительно нашел место, почему цепочка больше не работает. Я открыл задачу на странице проекта на drupal.org: https://www.drupal.org/project/token/issues/3228947.

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

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