У нас есть два пользовательских объекта: парламент_период (могут быть выборы или законодательный орган) и парламент. А парламент_период сущность имеет ссылку на парламент юридическое лицо.
В Голосование узел, у нас есть поле ссылки на сущность для парламент_период объекты, пакет которых законодательный орган (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->генерировать()
для всех идентифицированных токенов или есть лучший способ связать токены для пользовательских сущностей?