3

我不确定这是否是实现这一点的正确方法,所以我希望你能帮助我。我试图在 Drupal 8 中引用一个自定义内容实体,条件是只有当前用户创建的实体才应该显示。

基本上自定义实体 1 -> 自定义实体 2(由用户创建)

我找到了一种使用视图执行此操作的方法,但我想知道如何以编程方式实现此目的。

请注意,我已经设法获取了一个 id 列表并将其显示为下拉列表,但这不是我想要的。

我想将参考显示为 autocomplete 。

这是我到目前为止得到的:

$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 执行的查询以获取引用的实体?

4

1 回答 1

-2

尝试这个:

`

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

`

于 2017-07-15T10:33:54.250 回答