Tôi đạt được nó bằng cách sử dụng getFieldDefinitions()
định nghĩa trong Class EntityManager
. Vì vậy, để có được tất cả các trường được sử dụng trong một gói cụ thể, đây là một cách:
$bundle_fields = \Drupal::entityManager()->getFieldDefinitions('node', 'article');
Mặc dù ở trên $bundle_fields
cũng chứa nid, uuid, revisions, langcode, etc
như các lĩnh vực. Vì vậy, để có được một đầu ra chính xác, tôi đã làm một cái gì đó như thế này:
$entity_type_id = 'node';
$bundle = 'article';
foreach (\Drupal::entityManager()->getFieldDefinitions($entity_type_id, $bundle) as $field_name => $field_definition) {
if (!empty($field_definition->getTargetBundle())) {
$bundleFields[$entity_type_id][$field_name]['type'] = $field_definition->getType();
$bundleFields[$entity_type_id][$field_name]['label'] = $field_definition->getLabel();
}
}
$fields = $entity->getFieldDefinitions();
sẽ làm điều đó. Tôi không chắc thứ tương đươngfield_info_instances()
là gì,FieldStorageConfig
dường như không có