在定义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();
}
}