Tương đương field_info_instance()
với Drupal 8 là gì?
Cài đặt trường mặc định được lưu dưới dạng cấu hình trong một tệp như field.field.ENTITYTYPE.BUNDLE.FIELDNAME.yml, nhưng làm cách nào để tôi nhận được giá trị hiện tại của chúng?
Tương đương field_info_instance()
với Drupal 8 là gì?
Cài đặt trường mặc định được lưu dưới dạng cấu hình trong một tệp như field.field.ENTITYTYPE.BUNDLE.FIELDNAME.yml, nhưng làm cách nào để tôi nhận được giá trị hiện tại của chúng?
Câu trả lời:
Sử dụng dịch vụ entity_field.manager , bạn có thể nhận được một mảng các lớp BaseFieldDefDef. Dịch vụ này cũng có thể được tiêm, nhưng đối với mã làm việc sao chép-dán, bạn có thể thực hiện như sau:
$bundle_fields = \Drupal::getContainer()->get('entity_field.manager')->getFieldDefinitions($entity_type, $bundle);
$field_definition = $bundle_fields[$field_name];
$catalog_id = $field_definition->getSetting($setting_name);
Sử dụng một ví dụ trường:
$settings = $field->getFieldDefinition()->getSettings();
Ví dụ: trong một tiện ích trường:
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
$element = [];
// Get the settings.
$settings = $items[$delta]->getFieldDefinition()->getSettings();
// ... build render array
return $element;
}
Cách đơn giản nhất để có được cấu hình trường là sử dụng EntityTypeManager .
$entity_type = 'node';// node, taxonomy_term, taxonomy_vocabulary, ...
$bundle = 'article';// the content type machine name
$field = 'field_article_tags';// the field machine name
$fieldConfig = \Drupal::entityTypeManager()
->getStorage('field_config')
->load($entity_type . '.' . $bundle . '.' . $field);