Tôi có hai mô-đun, mỗi mô-đun đang xác định dịch vụ chuẩn hóa
module_one.services.yml
dịch vụ:
module_one.normalizer.node_entity:
lớp: Drupal\module_one\Normalizer\ModuleOneEntityNormalizer
đối số: ['@entity_type.manager']
thẻ:
- { tên: chuẩn hóa, ưu tiên: 10 }
module_two.services.yml
dịch vụ:
module_two.normalizer.node_entity:
lớp: Drupal\module_two\Normalizer\ModuleTwoEntityNormalizer
đối số: ['@entity_type.manager']
thẻ:
- { tên: chuẩn hóa, ưu tiên: 10 }
Đối với mỗi mô-đun, tôi đang tạo một trình chuẩn hóa riêng biệt và có lẽ xác định một không gian tên riêng, ví dụ:
<?php
không gian tên Drupal\module_one\Normalizer;
sử dụng Drupal\Core\Entity\EntityTypeManagerInterface;
sử dụng Drupal\serialization\Normalizer\ContentEntityNormalizer;
sử dụng Drupal\node\NodeInterface;
/**
* Chuyển đổi cấu trúc đối tượng thực thể Drupal thành một mảng được chuẩn hóa.
*/
lớp ModuleOneEntityNormalizer mở rộng ContentEntityNormalizer {
...
Vấn đề là với cả hai mô-đun được bật, một dịch vụ sẽ chặn dịch vụ kia - trình nối tiếp/trình chuẩn hóa kích hoạt như mong đợi cho mô-đun đầu tiên nhưng không phải cho mô-đun thứ hai. Cách duy nhất để cái kia được công nhận là tăng mức độ ưu tiên của nó nhưng điều đó lại chặn cái đầu tiên.
Tôi còn thiếu điều gì trong các định nghĩa có thể ngăn hai dịch vụ này xung đột với nhau?
Cập nhật: Cảm ơn vì những nhận xét thực sự hữu ích, bắt đầu quay số về điều này. Cả hai bộ chuẩn hóa đều có cùng một $supportedInterface được bảo vệ, ví dụ:
/**
* Giao diện hoặc lớp mà Bộ chuẩn hóa này hỗ trợ.
*
* chuỗi @var
*/
được bảo vệ $supportedInterfaceOrClass = [
'Drupal\nút\NodeInterface'
];
Cái nào được gắn cờ trong Sổ tay API tuần tự hóa Drupal như một vấn đề