Drupal 8:扩展用户类

Mav*_*ick 0 inheritance module class drupal-8

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

谢谢

Ree*_*and 5

您需要实现hook_entity_type_build()。

在您的模块中创建一个扩展\Drupal\user\Entity\User.

use Drupal\user\Entity\User as BaseUser;

class MyUser extends BaseUser {
}
Run Code Online (Sandbox Code Playgroud)

然后用你的替换现有的类

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');
  }
}
Run Code Online (Sandbox Code Playgroud)

确保重建缓存。