Drupal 8:扩展用户类

时间:2018-02-12 13:00:04

标签: class inheritance module drupal-8

有没有办法将User类扩展为自定义模块? 我需要创建一个自定义用户类(例如 Mymodule \ User ),它将使用/覆盖现有的User类方法或添加一些其他自定义方法。

谢谢

1 个答案:

答案 0 :(得分:1)

您需要实施hook_entity_type_build().

在模块中创建一个扩展\Drupal\user\Entity\User的新类。

use Drupal\user\Entity\User as BaseUser;

class MyUser extends BaseUser {
}

然后用你的替换现有的课程

use Drupal\Core\Entity\EntityTypeInterface;

/**
 * @param EntityTypeInterface[] $entity_types
 */
function my_module_entity_type_build(&$entity_types) {
  if (isset($entity_types['user'])) {
    $entity_types['user']->setClass('Drupal\my_module\Entity\MyUser');
  }
}

确保重建缓存。