2024-01-17

在定义Entity的handlers中自定义views_data

*   handlers = {
*     "views_data" = "Drupal\mymodule\Entity\MymoduleViewsData",

创建MymoduleViewsData字段

<?php

namespace Drupal\mymodule\Entity;

use Drupal\views\EntityViewsData;

class MymoduleViewsData extends EntityViewsData {

  /**
   * {@inheritdoc}
   */
  public function getViewsData() {
    $data = parent::getViewsData();
    $data['my_entity_type']['my_field'] = [
      'title' => $this->t('test field'),
      'help' => $this->t('test field'),
      'field' => [
        'id' => 'field_id',
      ],
    ];
    return $data;
  }

}

如果是已存在Entity可以这样

/**
 * Implements hook_views_data().
 */
function mymodule_views_data() {
  $data['my_entity_type']['my_field'] = [
      'title' => $this->t('test field'),
      'help' => $this->t('test field'),
      'field' => [
        'id' => 'field_id',
      ],
  ];

  return $data;
}

 

在模块src/Plugin/views/field下面创建文件MyField.php

<?php

namespace Drupal\my_module\Plugin\views\field;

use Drupal\views\Plugin\views\field\FieldPluginBase;
use Drupal\views\ResultRow;

// 这里的field_id和上面的field_id对应
/**
 * @ViewsField("field_id")
 */
class MyField extends FieldPluginBase {

  /**
   * {@inheritdoc}
   */
  public function query() {}

  /**
   * {@inheritdoc}
   */
  public function render(ResultRow $values) {
    // 自定义输出.
    $entity = $this->getEntity($values);
    return $entity->label();
  }

}


 

标签: Drupal Views