EntityReference.php

Same filename in this branch
  1. 10 core/modules/field/src/Plugin/migrate/field/d7/EntityReference.php
  2. 10 core/modules/views/src/Plugin/views/row/EntityReference.php
  3. 10 core/modules/views/src/Plugin/views/display/EntityReference.php
  4. 10 core/lib/Drupal/Core/Entity/Plugin/DataType/EntityReference.php
Same filename in other branches
  1. 9 core/modules/field/src/Plugin/migrate/field/d7/EntityReference.php
  2. 9 core/modules/views/src/Plugin/views/row/EntityReference.php
  3. 9 core/modules/views/src/Plugin/views/display/EntityReference.php
  4. 9 core/modules/views/src/Plugin/views/style/EntityReference.php
  5. 9 core/lib/Drupal/Core/Entity/Plugin/DataType/EntityReference.php
  6. 8.9.x core/modules/field/src/Plugin/migrate/field/d7/EntityReference.php
  7. 8.9.x core/modules/views/src/Plugin/views/row/EntityReference.php
  8. 8.9.x core/modules/views/src/Plugin/views/display/EntityReference.php
  9. 8.9.x core/modules/views/src/Plugin/views/style/EntityReference.php
  10. 8.9.x core/modules/entity_reference/src/Plugin/views/row/EntityReference.php
  11. 8.9.x core/modules/entity_reference/src/Plugin/views/display/EntityReference.php
  12. 8.9.x core/modules/entity_reference/src/Plugin/views/style/EntityReference.php
  13. 8.9.x core/lib/Drupal/Core/Field/Plugin/migrate/field/d7/EntityReference.php
  14. 8.9.x core/lib/Drupal/Core/Entity/Plugin/DataType/EntityReference.php
  15. 11.x core/modules/field/src/Plugin/migrate/field/d7/EntityReference.php
  16. 11.x core/modules/views/src/Plugin/views/row/EntityReference.php
  17. 11.x core/modules/views/src/Plugin/views/display/EntityReference.php
  18. 11.x core/modules/views/src/Plugin/views/style/EntityReference.php
  19. 11.x core/lib/Drupal/Core/Entity/Plugin/DataType/EntityReference.php
  20. 11.x core/modules/views/src/Plugin/views/filter/EntityReference.php

Namespace

Drupal\views\Plugin\views\style

File

core/modules/views/src/Plugin/views/style/EntityReference.php

View source
<?php

namespace Drupal\views\Plugin\views\style;

use Drupal\Component\Utility\Xss;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\views\Attribute\ViewsStyle;

/**
 * EntityReference style plugin.
 *
 * @ingroup views_style_plugins
 */
class EntityReference extends StylePluginBase {
    
    /**
     * {@inheritdoc}
     */
    protected $usesRowPlugin = TRUE;
    
    /**
     * {@inheritdoc}
     */
    protected $usesFields = TRUE;
    
    /**
     * {@inheritdoc}
     */
    protected $usesGrouping = FALSE;
    
    /**
     * {@inheritdoc}
     */
    protected function defineOptions() {
        $options = parent::defineOptions();
        $options['search_fields'] = [
            'default' => [],
        ];
        return $options;
    }
    
    /**
     * {@inheritdoc}
     */
    public function buildOptionsForm(&$form, FormStateInterface $form_state) {
        parent::buildOptionsForm($form, $form_state);
        $options = $this->displayHandler
            ->getFieldLabels(TRUE);
        $form['search_fields'] = [
            '#type' => 'checkboxes',
            '#title' => $this->t('Search fields'),
            '#options' => $options,
            '#required' => TRUE,
            '#default_value' => $this->options['search_fields'],
            '#description' => $this->t('Select the field(s) that will be searched when using the autocomplete widget.'),
            '#weight' => -3,
        ];
    }
    
    /**
     * {@inheritdoc}
     */
    public function render() {
        if (!empty($this->view->live_preview)) {
            return parent::render();
        }
        // Group the rows according to the grouping field, if specified.
        $sets = $this->renderGrouping($this->view->result, $this->options['grouping']);
        // Grab the alias of the 'id' field added by
        // entity_reference_plugin_display.
        $id_field_alias = $this->view->storage
            ->get('base_field');
        // @todo We don't display grouping info for now. Could be useful for select
        // widget, though.
        $results = [];
        foreach ($sets as $records) {
            foreach ($records as $values) {
                $results[$values->{$id_field_alias}] = $this->view->rowPlugin
                    ->render($values);
                // Sanitize HTML, remove line breaks and extra whitespace.
                $results[$values->{$id_field_alias}]['#post_render'][] = function ($html, array $elements) {
                    return Xss::filterAdmin(preg_replace('/\\s\\s+/', ' ', str_replace("\n", '', $html)));
                };
            }
        }
        return $results;
    }
    
    /**
     * {@inheritdoc}
     */
    public function evenEmpty() {
        return TRUE;
    }

}

Classes

Title Deprecated Summary
EntityReference EntityReference style plugin.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.