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 * @var array Stores the available options.
23 protected $valueOptions;
25 public function getValueOptions() {
26 if (isset($this->valueOptions)) {
30 if (isset($this->definition['options callback']) && is_callable($this->definition['options callback'])) {
31 if (isset($this->definition['options arguments']) && is_array($this->definition['options arguments'])) {
32 $this->valueOptions = call_user_func_array($this->definition['options callback'], $this->definition['options arguments']);
35 $this->valueOptions = call_user_func($this->definition['options callback']);
39 $this->valueOptions = [];
46 protected function defineOptions() {
47 $options = parent::defineOptions();
48 $options['machine_name'] = ['default' => FALSE];
56 public function buildOptionsForm(&$form, FormStateInterface $form_state) {
57 parent::buildOptionsForm($form, $form_state);
59 $form['machine_name'] = [
60 '#title' => $this->t('Output machine name'),
61 '#description' => $this->t('Display field as machine name.'),
62 '#type' => 'checkbox',
63 '#default_value' => !empty($this->options['machine_name']),
70 public function preRender(&$values) {
71 $this->getValueOptions();
77 public function render(ResultRow $values) {
78 $value = $values->{$this->field_alias};
79 if (!empty($this->options['machine_name']) || !isset($this->valueOptions[$value])) {
80 $result = $this->sanitizeValue($value);
83 $result = $this->valueOptions[$value];