drupal 8 BaseFieldDefinition entity_reference с условием
Я не уверен, что это правильный путь для реализации этого, поэтому я надеюсь, что вы можете мне помочь. Я пытаюсь сослаться на объект пользовательского содержимого в Drupal 8 с условием, что должны отображаться только объекты, созданные текущим пользователем.
В основном CUSTOM ENTITY 1 -> CUSTOM ENTITY 2 (создается пользователем)
Я нашел способ сделать это с помощью представлений, но мне интересно, как достичь этого программно.
Обратите внимание, что мне уже удалось получить список идентификаторов и отобразить его в раскрывающемся списке, но это не то, что я хочу.
Я хотел бы показать ссылку как автозаполнение.
Это то, что я получил так далеко:
$fields['dishes'] = BaseFieldDefinition::create('entity_reference')
->setLabel(t('Dishes'))
->setDescription(t('Select the dishes to add to this menu'))
->setSetting('target_type', 'dish')
->setSetting('handler', 'default')
->setTranslatable(TRUE)
->setCardinality(-1)
->setDisplayOptions('view', [
'label' => 'hidden',
'type' => 'entity_reference_label',
'weight' => -1,
])
->setDisplayOptions('form', [
'type' => 'entity_reference_autocomplete',
'weight' => -1,
'settings' => [
'match_operator' => 'CONTAINS',
'size' => '60',
'autocomplete_type' => 'tags',
'placeholder' => '',
],
])
->setDisplayConfigurable('form', FALSE)
->setDisplayConfigurable('view', TRUE);
Есть ли способ добавить условия к этому? Или настроить запрос, который делает Drupal, чтобы получить указанную сущность?
1 ответ
Попробуй это:
`
$fields['subgroup_id'] = BaseFieldDefinition::create('entity_reference')
->setLabel(t('Dalinama grupėms'))
->setDescription(t('Allocation groups.'))
->setSetting('target_type', 'distribution_group')
->setSetting('handler', 'views')
->setSetting('handler_settings', [
'view' => [
'view_name' => 'entity_reference_views_filter',
'display_name' => 'entity_reference_1',
],
])
->setRequired(TRUE)
->setCardinality(1)
->setDisplayOptions('view', array(
'label' => 'above',
'type' => 'list_default',
'weight' => -4,
))
->setDisplayOptions('form', array(
'type' => 'options_select',
'settings' => array(
'match_operator' => 'CONTAINS',
'size' => 60,
'placeholder' => '',
),
'weight' => -2,
))
->setDisplayConfigurable('form', TRUE)
->setDisplayConfigurable('view', TRUE);
`