You are here

public function Entity::buildOptionsForm in Drupal 9

Same name in this branch
  1. 9 core/modules/views/src/Plugin/views/area/Entity.php \Drupal\views\Plugin\views\area\Entity::buildOptionsForm()
  2. 9 core/modules/views/src/Plugin/views/argument_validator/Entity.php \Drupal\views\Plugin\views\argument_validator\Entity::buildOptionsForm()
Same name and namespace in other branches
  1. 8 core/modules/views/src/Plugin/views/argument_validator/Entity.php \Drupal\views\Plugin\views\argument_validator\Entity::buildOptionsForm()

Provides the default form for setting options.

Overrides ArgumentValidatorPluginBase::buildOptionsForm

2 calls to Entity::buildOptionsForm()
TermName::buildOptionsForm in core/modules/taxonomy/src/Plugin/views/argument_validator/TermName.php
Provides the default form for setting options.
User::buildOptionsForm in core/modules/user/src/Plugin/views/argument_validator/User.php
Provides the default form for setting options.
2 methods override Entity::buildOptionsForm()
TermName::buildOptionsForm in core/modules/taxonomy/src/Plugin/views/argument_validator/TermName.php
Provides the default form for setting options.
User::buildOptionsForm in core/modules/user/src/Plugin/views/argument_validator/User.php
Provides the default form for setting options.

File

core/modules/views/src/Plugin/views/argument_validator/Entity.php, line 97

Class

Entity
Defines an argument validator plugin for each entity type.

Namespace

Drupal\views\Plugin\views\argument_validator

Code

public function buildOptionsForm(&$form, FormStateInterface $form_state) {
  parent::buildOptionsForm($form, $form_state);
  $entity_type_id = $this->definition['entity_type'];

  // Derivative IDs are all entity:entity_type. Sanitized for js.
  // The ID is converted back on submission.
  $sanitized_id = ArgumentPluginBase::encodeValidatorId($this->definition['id']);
  $entity_type = $this->entityTypeManager
    ->getDefinition($entity_type_id);

  // If the entity has bundles, allow option to restrict to bundle(s).
  if ($entity_type
    ->hasKey('bundle')) {
    $bundle_options = [];
    foreach ($this->entityTypeBundleInfo
      ->getBundleInfo($entity_type_id) as $bundle_id => $bundle_info) {
      $bundle_options[$bundle_id] = $bundle_info['label'];
    }
    $form['bundles'] = [
      '#title' => $entity_type
        ->getBundleLabel() ?: $this
        ->t('Bundles'),
      '#default_value' => $this->options['bundles'],
      '#type' => 'checkboxes',
      '#options' => $bundle_options,
      '#description' => $this
        ->t('If none are selected, all are allowed.'),
    ];
  }

  // Offer the option to filter by access to the entity in the argument.
  $form['access'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Validate user has access to the %name', [
      '%name' => $entity_type
        ->getLabel(),
    ]),
    '#default_value' => $this->options['access'],
  ];
  $form['operation'] = [
    '#type' => 'radios',
    '#title' => $this
      ->t('Access operation to check'),
    '#options' => [
      'view' => $this
        ->t('View'),
      'update' => $this
        ->t('Edit'),
      'delete' => $this
        ->t('Delete'),
    ],
    '#default_value' => $this->options['operation'],
    '#states' => [
      'visible' => [
        ':input[name="options[validate][options][' . $sanitized_id . '][access]"]' => [
          'checked' => TRUE,
        ],
      ],
    ],
  ];

  // If class is multiple capable give the option to validate single/multiple.
  if ($this->multipleCapable) {
    $form['multiple'] = [
      '#type' => 'radios',
      '#title' => $this
        ->t('Multiple arguments'),
      '#options' => [
        0 => $this
          ->t('Single ID', [
          '%type' => $entity_type
            ->getLabel(),
        ]),
        1 => $this
          ->t('One or more IDs separated by , or +', [
          '%type' => $entity_type
            ->getLabel(),
        ]),
      ],
      '#default_value' => (string) $this->options['multiple'],
    ];
  }
}