Điểm:0

Chuỗi mã thông báo cho các thực thể tùy chỉnh được tham chiếu

lá cờ cn

Chúng tôi có hai thực thể tùy chỉnh: quốc hội_period (có thể là một cuộc bầu cử hoặc một cơ quan lập pháp) và quốc hội. Một quốc hội_period thực thể có một tham chiếu đến một quốc hội thực thể. trong một thăm dò ý kiến nút, chúng tôi có một trường tham chiếu thực thể cho quốc hội_period các thực thể có gói là cơ quan lập pháp (lĩnh vực_lập pháp). (Đó là về các cuộc thăm dò mà các đại biểu tham gia.) Một phần của bí danh đường dẫn cho thăm dò ý kiến các nút phải là nội dung của một url_basis lĩnh vực từ quốc hội thực thể.

tôi đã sử dụng [node:field_legislature:entity:parliament:entity:url_basis]/[node:field_legislature:entity:identifier]/poll/[node:title] như mẫu Pathauto. Nó đã từng hoạt động được một thời gian, nhưng nó đã ngừng hoạt động vì [node:field_legislature:entity:parliament:entity:url_basis] mã thông báo.

Tôi không chắc những gì tôi đã thay đổi để làm cho nó ngừng hoạt động. bên trong hook_tokens() Tôi đã sử dụng đoạn mã sau.

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, 'parliament')) {
    $replacements += $token_service->generate('parliament', $parliament_tokens, ['parliament' => $parliamentPeriod->getParliament()], $options, $bubbleable_metadata);
  }
}

Điều này cho phép tạo chuỗi để thay thế bất kỳ mã thông báo nào liên quan đến một quốc hội thực thể khi một quốc hội_period thực thể được đưa ra (chẳng hạn như trong [nút:field_legislature:entity]). hook_tokens() được gọi một cách chính xác cho quốc hội mã thông báo thực thể, nhưng tên của mã thông báo được gửi đến hook_tokens()thực thể:url_basis, không phải url_basis.

Mặt khác, [node:field_legislature:entity:parliament:url_basis] không được phép, không có thực thể phần.

Tôi có nên loại bỏ thực thể: một phần trước khi tôi gọi $token_service->tạo()cho tất cả các mã thông báo đã xác định hoặc có cách nào tốt hơn để xâu chuỗi mã thông báo cho các thực thể tùy chỉnh không?

apaderno avatar
lá cờ us
*thực thể* không nên bị xóa.Đó là mã xử lý mã thông báo cho thực thể *parliament* cần xử lý nó, không phải mã xử lý mã thông báo cho thực thể *parliament_period*. Chúng tôi không thể cho bạn biết lý do tại sao mã trước đây hoạt động và mã này hiện không hoạt động mà không thấy mã bạn đã sử dụng trước đây và mã bạn sử dụng hiện tại. Chúng tôi cũng cần xem mã `hook_tokens()` đầy đủ, không chỉ một vài dòng.
apaderno avatar
lá cờ us
Ngoài ra, mô-đun Mã thông báo hoặc mô-đun khác triển khai mã thông báo đã được gỡ cài đặt trước khi mã ngừng hoạt động hay được cài đặt chưa?
lá cờ cn
Tôi tự hỏi tại sao bạn lại cần một mã thông báo tùy chỉnh cho việc này? Giả sử `parliament` là tên của một trường tham chiếu thực thể trên loại thực thể `parliament_period`, thì `[node:field_legislature:entity:parliament:entity:url_basis]` sẽ có sẵn mà không cần thêm bất kỳ mã nào
Tobias Krause avatar
lá cờ cn
@Clive Giả định này là chính xác: `parliament` ở đây trong mã thông báo này là một tên trường trong thực thể `parliament_period' tham chiếu đến một thực thể quốc hội. Vì vậy, bạn có nghĩa là điều này đã làm việc? Nó đã hoạt động như tôi đã đề cập và tôi không tìm thấy bất kỳ thay đổi nào nên tôi bối rối a) tại sao nó hoạt động và b) tại sao bây giờ nó không hoạt động nữa. Bạn có thể cho tôi biết mô-đun Mã thông báo xử lý chuỗi này ở đâu không?
4uk4 avatar
lá cờ cn
token.tokens.inc > [`field_tokens()`](https://git.drupalcode.org/project/token/-/blob/8.x-1.x/token.tokens.inc#L1677) - " Triển khai hook_tokens() thay mặt cho field.module."
Tobias Krause avatar
lá cờ cn
Cảm ơn bạn @4k4 - Tôi thực sự đã tìm ra nguyên nhân tại sao chuỗi không hoạt động nữa. Tôi đã mở một vấn đề trong trang dự án trên drupal.org: https://www.drupal.org/project/token/issues/3228947

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.