2017-07-03 7 views
1

これを実装するのが正しいかどうかはわかりませんので、助けてください。 Drupal 8でカスタムコンテンツエンティティを参照しようとしましたが、現在のユーザーによって作成されたエンティティのみが表示されるという条件があります。drupal 8 BaseFieldDefinition entity_reference with condition

は基本的に CUSTOM ENTITY 1 - > CUSTOM ENTITY 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