function EntityReference::valueForm

Overrides ManyToOne::valueForm

File

core/modules/views/src/Plugin/views/filter/EntityReference.php, line 406

Class

EntityReference
Filters a view by entity references.

Namespace

Drupal\views\Plugin\views\filter

Code

protected function valueForm(&$form, FormStateInterface $form_state) {
    if (!isset($this->options['sub_handler'])) {
        return;
    }
    switch ($this->options['widget']) {
        case static::WIDGET_SELECT:
            $this->valueFormAddSelect($form, $form_state);
            break;
        case static::WIDGET_AUTOCOMPLETE:
            $this->valueFormAddAutocomplete($form, $form_state);
            break;
    }
    if (!empty($this->view->live_preview)) {
        $this->alternateWidgetsDefaultNormalize($form, $form_state);
    }
    // Show or hide the value field depending on the operator field.
    $is_exposed = $this->options['exposed'];
    $visible = [];
    if ($is_exposed) {
        $operator_field = $this->options['expose']['use_operator'] && $this->options['expose']['operator_id'] ? $this->options['expose']['operator_id'] : NULL;
    }
    else {
        $operator_field = 'options[operator]';
        $visible[] = [
            ':input[name="options[expose_button][checkbox][checkbox]"]' => [
                'checked' => TRUE,
            ],
            ':input[name="options[expose][use_operator]"]' => [
                'checked' => TRUE,
            ],
            ':input[name="options[expose][operator_id]"]' => [
                'empty' => FALSE,
            ],
        ];
    }
    if ($operator_field) {
        foreach ($this->operatorValues(1) as $operator) {
            $visible[] = [
                ':input[name="' . $operator_field . '"]' => [
                    'value' => $operator,
                ],
            ];
        }
        $form['value']['#states'] = [
            'visible' => $visible,
        ];
    }
    if (!$is_exposed) {
        // Retain the helper option.
        $this->helper
            ->buildOptionsForm($form, $form_state);
        // Show help text if not exposed to end users.
        $form['value']['#description'] = $this->t('Leave blank for all. Otherwise, the first selected item will be the default instead of "Any".');
    }
}

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