function NumericField::buildOptionsForm

Same name and namespace in other branches
  1. 8.9.x core/modules/views/src/Plugin/views/field/NumericField.php \Drupal\views\Plugin\views\field\NumericField::buildOptionsForm()
  2. 10 core/modules/views/src/Plugin/views/field/NumericField.php \Drupal\views\Plugin\views\field\NumericField::buildOptionsForm()
  3. 11.x core/modules/views/src/Plugin/views/field/NumericField.php \Drupal\views\Plugin\views\field\NumericField::buildOptionsForm()

Overrides FieldPluginBase::buildOptionsForm

1 call to NumericField::buildOptionsForm()
NodeNewComments::buildOptionsForm in core/modules/comment/src/Plugin/views/field/NodeNewComments.php
Default option form that provides label widget that all fields should have.
1 method overrides NumericField::buildOptionsForm()
NodeNewComments::buildOptionsForm in core/modules/comment/src/Plugin/views/field/NodeNewComments.php
Default option form that provides label widget that all fields should have.

File

core/modules/views/src/Plugin/views/field/NumericField.php, line 44

Class

NumericField
Render a field as a numeric value.

Namespace

Drupal\views\Plugin\views\field

Code

public function buildOptionsForm(&$form, FormStateInterface $form_state) {
    if (!empty($this->definition['float'])) {
        $form['set_precision'] = [
            '#type' => 'checkbox',
            '#title' => $this->t('Round'),
            '#description' => $this->t('If checked, the number will be rounded.'),
            '#default_value' => $this->options['set_precision'],
        ];
        $form['precision'] = [
            '#type' => 'textfield',
            '#title' => $this->t('Precision'),
            '#default_value' => $this->options['precision'],
            '#description' => $this->t('Specify how many digits to print after the decimal point.'),
            '#states' => [
                'visible' => [
                    ':input[name="options[set_precision]"]' => [
                        'checked' => TRUE,
                    ],
                ],
            ],
            '#size' => 2,
        ];
        $form['decimal'] = [
            '#type' => 'textfield',
            '#title' => $this->t('Decimal point'),
            '#default_value' => $this->options['decimal'],
            '#description' => $this->t('What single character to use as a decimal point.'),
            '#size' => 2,
        ];
    }
    $form['separator'] = [
        '#type' => 'select',
        '#title' => $this->t('Thousands marker'),
        '#options' => [
            '' => $this->t('- None -'),
            ',' => $this->t('Comma'),
            ' ' => $this->t('Space'),
            '.' => $this->t('Decimal'),
            '\'' => $this->t('Apostrophe'),
        ],
        '#default_value' => $this->options['separator'],
        '#description' => $this->t('What single character to use as the thousands separator.'),
        '#size' => 2,
    ];
    $form['format_plural'] = [
        '#type' => 'checkbox',
        '#title' => $this->t('Format plural'),
        '#description' => $this->t('If checked, special handling will be used for plurality.'),
        '#default_value' => $this->options['format_plural'],
    ];
    $form['format_plural_string'] = [
        '#type' => 'value',
        '#default_value' => $this->options['format_plural_string'],
    ];
    $plural_array = explode(PoItem::DELIMITER, $this->options['format_plural_string']);
    $plurals = $this->getNumberOfPlurals($this->view->storage
        ->get('langcode'));
    for ($i = 0; $i < $plurals; $i++) {
        $form['format_plural_values'][$i] = [
            '#type' => 'textfield',
            // @todo Should use better labels https://www.drupal.org/node/2499639
'#title' => $i == 0 ? $this->t('Singular form') : $this->formatPlural($i, 'First plural form', '@count. plural form'),
            '#default_value' => $plural_array[$i] ?? '',
            '#description' => $this->t('Text to use for this variant, @count will be replaced with the value.'),
            '#states' => [
                'visible' => [
                    ':input[name="options[format_plural]"]' => [
                        'checked' => TRUE,
                    ],
                ],
            ],
        ];
    }
    if ($plurals == 2) {
        // Simplify interface text for the most common case.
        $form['format_plural_values'][0]['#description'] = $this->t('Text to use for the singular form, @count will be replaced with the value.');
        $form['format_plural_values'][1]['#title'] = $this->t('Plural form');
        $form['format_plural_values'][1]['#description'] = $this->t('Text to use for the plural form, @count will be replaced with the value.');
    }
    $form['prefix'] = [
        '#type' => 'textfield',
        '#title' => $this->t('Prefix'),
        '#default_value' => $this->options['prefix'],
        '#description' => $this->t('Text to put before the number, such as currency symbol.'),
    ];
    $form['suffix'] = [
        '#type' => 'textfield',
        '#title' => $this->t('Suffix'),
        '#default_value' => $this->options['suffix'],
        '#description' => $this->t('Text to put after the number, such as currency symbol.'),
    ];
    parent::buildOptionsForm($form, $form_state);
}

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