MachineName.php

Same filename in this branch
  1. 11.x core/modules/migrate/src/Plugin/migrate/process/MachineName.php
  2. 11.x core/lib/Drupal/Core/Render/Element/MachineName.php
Same filename in other branches
  1. 9 core/modules/views/src/Plugin/views/field/MachineName.php
  2. 9 core/modules/migrate/src/Plugin/migrate/process/MachineName.php
  3. 9 core/lib/Drupal/Core/Render/Element/MachineName.php
  4. 8.9.x core/modules/views/src/Plugin/views/field/MachineName.php
  5. 8.9.x core/modules/migrate/src/Plugin/migrate/process/MachineName.php
  6. 8.9.x core/lib/Drupal/Core/Render/Element/MachineName.php
  7. 10 core/modules/views/src/Plugin/views/field/MachineName.php
  8. 10 core/modules/migrate/src/Plugin/migrate/process/MachineName.php
  9. 10 core/lib/Drupal/Core/Render/Element/MachineName.php

Namespace

Drupal\views\Plugin\views\field

File

core/modules/views/src/Plugin/views/field/MachineName.php

View source
<?php

namespace Drupal\views\Plugin\views\field;

use Drupal\Core\Form\FormStateInterface;
use Drupal\views\Attribute\ViewsField;
use Drupal\views\ResultRow;

/**
 * Field handler which allows to show machine name content as human name.
 * @ingroup views_field_handlers
 *
 * Definition items:
 * - options callback: The function to call in order to generate the value options. If omitted, the options 'Yes' and 'No' will be used.
 * - options arguments: An array of arguments to pass to the options callback.
 */
class MachineName extends FieldPluginBase {
    
    /**
     * Stores the available options.
     *
     * @var array
     */
    protected $valueOptions;
    public function getValueOptions() {
        if (isset($this->valueOptions)) {
            return;
        }
        if (isset($this->definition['options callback']) && is_callable($this->definition['options callback'])) {
            if (isset($this->definition['options arguments']) && is_array($this->definition['options arguments'])) {
                $this->valueOptions = call_user_func_array($this->definition['options callback'], $this->definition['options arguments']);
            }
            else {
                $this->valueOptions = call_user_func($this->definition['options callback']);
            }
        }
        else {
            $this->valueOptions = [];
        }
    }
    
    /**
     * {@inheritdoc}
     */
    protected function defineOptions() {
        $options = parent::defineOptions();
        $options['machine_name'] = [
            'default' => FALSE,
        ];
        return $options;
    }
    
    /**
     * {@inheritdoc}
     */
    public function buildOptionsForm(&$form, FormStateInterface $form_state) {
        parent::buildOptionsForm($form, $form_state);
        $form['machine_name'] = [
            '#title' => $this->t('Output machine name'),
            '#description' => $this->t('Display field as machine name.'),
            '#type' => 'checkbox',
            '#default_value' => !empty($this->options['machine_name']),
        ];
    }
    
    /**
     * {@inheritdoc}
     */
    public function preRender(&$values) {
        $this->getValueOptions();
    }
    
    /**
     * {@inheritdoc}
     */
    public function render(ResultRow $values) {
        $value = $values->{$this->field_alias};
        if (!empty($this->options['machine_name']) || !isset($this->valueOptions[$value])) {
            $result = $this->sanitizeValue($value);
        }
        else {
            $result = $this->valueOptions[$value];
        }
        return $result;
    }

}

Classes

Title Deprecated Summary
MachineName Field handler which allows to show machine name content as human name.

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