2017-07-03 5 views
1

Je ne suis pas sûr que ce soit la bonne façon d'implémenter ceci, alors j'espère que vous pouvez m'aider. J'essaye de référencer une entité de contenu personnalisée dans Drupal 8 avec la condition que seules les entités créées par l'utilisateur courant devraient apparaître.drupal 8 BaseFieldDefinition entity_reference avec condition

Fondamentalement ENTITÉ CUSTOM 1 -> ENTITÉ PERSO.2 (créé par l'utilisateur)

J'ai trouvé une façon de le faire avec vue, mais je me demande comment atteindre cet objectif d'un programme.

Veuillez noter que j'ai déjà réussi à obtenir une liste d'identifiants et à l'afficher sous forme de liste déroulante, mais ce n'est pas ce que je veux.

Je voudrais montrer la référence comme saisie semi-automatique.

C'est ce que je suis arrivé à ce jour:

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

Est-il possible d'ajouter des conditions à cela? Ou personnaliser la requête que fait Drupal pour obtenir l'entité référencée?

Répondre

-2

Essayez ceci:

`

$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

Même si votre code fonctionne, sans expliquer ce que vous avez fait et votre raisonnement derrière cela ne constitue pas une réponse très solide. –

+0

Il semble que vous utilisez la référence de vue, ce qui est la même que je fais, je me demandais s'il y avait un moyen d'interroger et d'injecter dans la saisie semi-automatique la valeur de ma requête au lieu d'utiliser des vues – soipo