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

时间:2013-03-25 14:57:00

标签: php zend-framework2 zfcuser

我确实读过这个答案ZF2, what's the best practice for working with Vendor Module's Form classes?。因此,主要清楚如何更改供应商模块的可配置部分,但如果在zfcUser模块中我想为实体/用户添加新功能,我该怎么办?

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

2 个答案:

答案 0 :(得分:6)

查看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 ZfcUser\Entity\User.
 * The entity class should implement ZfcUser\Entity\UserInterface
 */
//'user_entity_class' => 'ZfcUser\Entity\User',

说明很简单,将文件复制到./config/autoload/zfcuser.global.php,确保您的实体类实现ZfcUser\Entity\UserInterface,取消注释该行并更改FQCN以匹配您要使用的实体。

答案 1 :(得分:2)

我不会声称这是一种最佳做法,但这就是我设法处理这种情况的方法! 首先 - 非常感谢回答ZF2: Custom user mapper for ZfcUser module

所以,我做了:

  1. zfcUser/Entity自动加载中添加了zfc-user.global.php的配置:
    'zfcuser' => array(
        'tableName' => 'users',
        'user_entity_class' => 'Application\Entity\User'
    ),
    
  2. Entity\UserMapper\UserMapper\Hydrator的课程添加到我的src/Application实体和映射器子文件夹中。
  3. 将这些类名称空间更新为Application\EntityApplication\Mapper
  4. 将此配置添加到getServiceConfig的{​​{1}}功能:

    Module.php
  5. 更新了我的类依赖项以使用'factories' => [ 'zfcuser_user_mapper' => function ($sm) { $mapper = new Mapper\User(); $mapper->setDbAdapter($sm->get('Zend\Db\Adapter\Adapter')); $mapper->setEntityPrototype(new Entity\User()); $mapper->setHydrator(new Mapper\UserHydrator()); return $mapper; }, ] ,并将ZfcUSer作为Entity\User启动。