drupal 8 – ¿Se puede usar la clase BaseFieldOverride para implementar hook_entity_bundle_info ()?

Pregunta:

Necesito implementar hook_entity_bundle_info() , y noté que la documentación incluye un enlace a Finalizar API para crear, anular y alterar campos de paquete definidos por código . En resumen, ese problema dice que es incorrecto usar la clase BaseFieldDefinition porque esa clase marca el campo como un campo base, lo cual no es cierto, ya que el campo se agrega a un paquete.

¿ BaseFieldOverride puede usar la clase BaseFieldOverride para implementar hook_entity_bundle_info() ?

Al hacerlo, el ejemplo dado para hook_entity_bundle_info() se convertiría en el siguiente.

function hook_entity_bundle_field_info(\Drupal\Core\Entity\EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) {
  // Add a property only to nodes of the 'article' bundle.
  if ($entity_type->id() == 'node' && $bundle == 'article') {
    $fields = [];
    $base_field_definition = BaseFieldDefinition::create('string')
      ->setLabel(t('More text'))
      ->setComputed(TRUE)
      ->setClass('\Drupal\mymodule\EntityComputedMoreText');
    $fields['mymodule_text_more'] = BaseFieldOverride::createFromBaseFieldDefinition($base_field_definition, $bundle);
    return $fields;
  }
}

Respuesta:

Según el problema que vinculó, la respuesta es no :

Entonces, en teoría, los módulos contrib pueden implementar campos de paquete no basados ​​en configuración, pero no proporcionamos una clase de implementación con la que hacerlo.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım