2017-07-03 40 views
1

我不確定這是否是正確的方式來實現這一點,所以我希望你能幫助我。 我想在Drupal 8中引用一個自定義內容實體,條件是隻有當前用戶創建的實體應該顯示。drupal 8 BaseFieldDefinition entity_reference條件

基本上 自定義實體1 - >自定義實體2(由用戶創建)

我找到了一種方法,可欣賞到做到這一點,但我想知道如何以編程方式實現這一目標。

請注意,我已經設法得到一個ID列表並將其顯示爲一個下拉列表,但這不是我想要的。

我想顯示引用爲自動完成。

這是我走到這一步:

$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得到被引用的實體?

回答

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

`

+0

即使你的代碼做的工作,沒有解釋你做了什麼,其背後的理由也並不構成一個非常堅實的答案。 –

+0

看來你正在使用視圖引用,這與我正在做的相同,我想知道是否有一種方法來查詢和注入到我的查詢的自動完成的價值,而不是使用視圖 – soipo