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.