Entity reference zwischen zwei programmierten entities
Eingetragen von AndyLicht (260)
am 04.05.2017 - 20:21 Uhr in
am 04.05.2017 - 20:21 Uhr in
Hi Forum,
bei meiner Modulinstallation werden zwei custom entities angelegt, nun möchte ich bei entity zwei eine entity reference anlegen. Das entsprechende Feld ist schon da, nur bekomme ich beim autocomplete keine "Verbindung" zu meinem ersten entity type hergestellt. Vielleicht kann von euch jemand mal auf den Code drüberschauen:
Hier das Feld, welches die Reference erzeugen soll:
<?php
$fields['layer_source_ref'] = BaseFieldDefinition::create('entity_reference')
->setLabel(t('Source of the layer'))
->setDescription(t('Reference to the source of the layer'))
->setSetting('target_type','openlayers_source')
->setSettings('handler','default')
->setDisplayOptions('view', array(
'label' => 'above',
'type' => 'string',
'weight' => -6,
))
->setDisplayOptions('form', array(
'type' => 'entity_reference_autocomplete',
'settings' => array(
'match_operator' => 'CONTAINS',
'size' => 60,
'placeholder' => 'Name of the source'
),
))
->setDisplayConfigurable('form', TRUE)
->setDisplayConfigurable('view', TRUE);
?>
Die Entity auf die verwiesen soll ist:
<?php
@ContentEntityType(
* id = "openlayers_source",
* label = @Translation("OpenLayers Source entity"),
* handlers = {
* "view_builder" = "Drupal\Core\Entity\EntityViewBuilder",
* "list_builder" = "Drupal\openlayers\Entity\Controller\SourceListBuilder",
* "form" = {
* "add" = "Drupal\openlayers\Form\SourceForm",
* "edit" = "Drupal\openlayers\Form\SourceForm",
* "delete" = "Drupal\openlayers\Form\SourceDeleteForm",
* },
* "access" = "Drupal\openlayers\SourceAccessControlHandler",
* },
* list_cache_contexts = { "user" },
* base_table = "openlayers_source",
* admin_permission = "administer openlayers_source entity",
* entity_keys = {
* "id" = "id",
* "uuid" = "uuid",
* "user_id" = "user_id",
* "source_name" = "source_name",
* "source_type" = "source_type",
* "source_url" = "source_url"
* },
* links = {
* "canonical" = "/admin/structure/openlayers/source/{openlayers_source}",
* "edit-form" = "/admin/structure/openlayers/source/{openlayers_source}/edit",
* "delete-form" = "/admin/structure/openlayers/source/{openlayers_source}/delete",
* "collection" = "/admin/structure/openlayers/source/list"
* },
* field_ui_base_route = "entity.openlayers.source.settings",
* )
?>
vielen lieben Dank!
- Anmelden oder Registrieren um Kommentare zu schreiben
Lösung:
am 05.05.2017 - 13:37 Uhr
Der Fehler liegt in der Definition der Entities, da dort ein label mit angegeben werden muss:
<?php
* entity_keys = {
* "id" = "id",
* "uuid" = "uuid",
* "user_id" = "user_id",
* "label" = "source_name",
* "source_type" = "source_type",
* "source_url" = "source_url"
* },
?>
Aller Anfang ist schwer...