Nhận cài đặt của trường


8

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:


9

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);

4
Nếu bạn có một thực thể và đang làm việc với điều đó, bạn cũng có thể truy cập các định nghĩa trường của đối tượng thực thể của bạn với $ entity-> getFieldDefDefs ().
Berdir

2

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;
}

0

Tôi muốn lấy Loại và Nhãn từ định nghĩa trường. Điều này đã không làm việc:

$setting_name = 'label';
$label = $field_definition->getSetting($setting_name);

Điều này đã làm việc:

$label = $field_definition->getLabel();
$type = $field_definition->getType();

0

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);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.