3 namespace Drupal\entity_reference_revisions\Plugin\views\style;
5 use Drupal\Component\Utility\Xss;
6 use Drupal\Core\Form\FormStateInterface;
7 use Drupal\views\Plugin\views\style\StylePluginBase;
10 * EntityReferenceRevisions style plugin.
12 * @ingroup views_style_plugins
15 * id = "entity_reference_revisions",
16 * title = @Translation("Entity Reference Revisions list"),
17 * help = @Translation("Returns results as a PHP array of labels and rendered rows."),
18 * theme = "views_view_unformatted",
19 * register_theme = FALSE,
20 * display_types = {"entity_reference_revisions"}
23 class EntityReferenceRevisions extends StylePluginBase {
26 * Overrides \Drupal\views\Plugin\views\style\StylePluginBase::usesRowPlugin.
28 protected $usesRowPlugin = TRUE;
31 * Overrides \Drupal\views\Plugin\views\style\StylePluginBase::usesFields.
33 protected $usesFields = TRUE;
36 * Overrides \Drupal\views\Plugin\views\style\StylePluginBase::usesGrouping.
38 protected $usesGrouping = FALSE;
41 * Overrides \Drupal\views\Plugin\views\style\StylePluginBase\StylePluginBase::defineOptions().
43 protected function defineOptions() {
44 $options = parent::defineOptions();
45 $options['search_fields'] = array('default' => NULL);
51 * Overrides \Drupal\views\Plugin\views\style\StylePluginBase\StylePluginBase::buildOptionsForm().
53 public function buildOptionsForm(&$form, FormStateInterface $form_state) {
54 parent::buildOptionsForm($form, $form_state);
56 $options = $this->displayHandler->getFieldLabels(TRUE);
57 $form['search_fields'] = array(
58 '#type' => 'checkboxes',
59 '#title' => $this->t('Search fields'),
60 '#options' => $options,
62 '#default_value' => $this->options['search_fields'],
63 '#description' => $this->t('Select the field(s) that will be searched when using the autocomplete widget.'),
69 * Overrides \Drupal\views\Plugin\views\style\StylePluginBase\StylePluginBase::render().
71 public function render() {
72 if (!empty($this->view->live_preview)) {
73 return parent::render();
76 // Group the rows according to the grouping field, if specified.
77 $sets = $this->renderGrouping($this->view->result, $this->options['grouping']);
79 // Grab the alias of the 'id' field added by
80 // entity_reference_plugin_display.
81 $id_field_alias = $this->view->storage->get('base_field');
83 // @todo We don't display grouping info for now. Could be useful for select
86 foreach ($sets as $records) {
87 foreach ($records as $values) {
88 // Sanitize HTML, remove line breaks and extra whitespace.
89 $output = $this->view->rowPlugin->render($values);
90 $output = \Drupal::service('renderer')->render($output);
91 $results[$values->{$id_field_alias}] = Xss::filterAdmin(preg_replace('/\s\s+/', ' ', str_replace("\n", '', $output)));
100 public function evenEmpty() {