更改供应商模块的核心类的ZF2最佳实践



我确实读过这个答案ZF2,与供应商模块的表单类一起工作的最佳实践是什么?因此,主要清楚如何更改供应商模块的可配置部分,但是如果在zfcUser模块中我想向实体/用户添加新功能,我该怎么办?

简而言之,我想检查用户角色,我已经添加到DB字段,最好的方法是什么?也许我应该在其他地方做,而不是在zfcUSer中,如果是的话,在哪里?

看看ZfcUser/config/zfcuser.global.php.dist

在这里你会看到这个

/**
 * User Model Entity Class
 *
 * Name of Entity class to use. Useful for using your own entity class
 * instead of the default one provided. Default is ZfcUserEntityUser.
 * The entity class should implement ZfcUserEntityUserInterface
 */
//'user_entity_class' => 'ZfcUserEntityUser',

方向很简单,将文件复制到./config/autoload/zfcuser.global.php,确保您的实体类实现ZfcUserEntityUserInterface,取消注释行并更改FQCN以匹配您想要使用的实体。

我不会说这是最佳实践,但这就是我处理这种情况的方法!首先,非常感谢ZF2: ZfcUser模块的自定义用户映射器。

所以,我做了:

  1. zfc-user.global.php自动加载中增加了zfcUser/Entity的配置:<>之前'zfcuser' => array('tableName' => 'users','user_entity_class' => 'ApplicationEntityUser'),
  2. EntityUser, MapperUserMapperHydrator的类添加到我的src/Application实体和映射子文件夹中。
  3. 将这些类命名空间更新为我的ApplicationEntityApplicationMapper
  4. 将此配置添加到我的Module.phpgetServiceConfig功能:

    'factories' => [
        'zfcuser_user_mapper' => function ($sm) {
            $mapper = new MapperUser();
            $mapper->setDbAdapter($sm->get('ZendDbAdapterAdapter'));
            $mapper->setEntityPrototype(new EntityUser());
            $mapper->setHydrator(new MapperUserHydrator());
            return $mapper;
        },
    ]
    
  5. 更新我的类依赖使用ZfcUSer和启动我的EntityUser作为extends ZfcUserEntityUser implements ZfcUserEntityUserInterface

最新更新