3 namespace Drupal\views\Plugin\views\field;
5 use Drupal\Core\Form\FormStateInterface;
6 use Drupal\views\ResultRow;
9 * Field handler which allows to show machine name content as human name.
10 * @ingroup views_field_handlers
13 * - options callback: The function to call in order to generate the value options. If omitted, the options 'Yes' and 'No' will be used.
14 * - options arguments: An array of arguments to pass to the options callback.
16 * @ViewsField("machine_name")
18 class MachineName extends FieldPluginBase {
21 * Stores the available options.
25 protected $valueOptions;
27 public function getValueOptions() {
28 if (isset($this->valueOptions)) {
32 if (isset($this->definition['options callback']) && is_callable($this->definition['options callback'])) {
33 if (isset($this->definition['options arguments']) && is_array($this->definition['options arguments'])) {
34 $this->valueOptions = call_user_func_array($this->definition['options callback'], $this->definition['options arguments']);
37 $this->valueOptions = call_user_func($this->definition['options callback']);
41 $this->valueOptions = [];
48 protected function defineOptions() {
49 $options = parent::defineOptions();
50 $options['machine_name'] = ['default' => FALSE];
58 public function buildOptionsForm(&$form, FormStateInterface $form_state) {
59 parent::buildOptionsForm($form, $form_state);
61 $form['machine_name'] = [
62 '#title' => $this->t('Output machine name'),
63 '#description' => $this->t('Display field as machine name.'),
64 '#type' => 'checkbox',
65 '#default_value' => !empty($this->options['machine_name']),
72 public function preRender(&$values) {
73 $this->getValueOptions();
79 public function render(ResultRow $values) {
80 $value = $values->{$this->field_alias};
81 if (!empty($this->options['machine_name']) || !isset($this->valueOptions[$value])) {
82 $result = $this->sanitizeValue($value);
85 $result = $this->valueOptions[$value];