我在 Zend Framework 2 应用程序中添加了模块ZfcUser。但是我必须使用现有的数据库表,它的列名与 ZfcUser 的默认表结构略有不同。
在ZfcUser wiki 页面中,它说如果我的模型不符合提供的接口,则可以使用自定义映射器。由于我的数据库表不同于默认表,因此我的用户实体类也不同于标准的 ZfcUser\Entity\User。但是我可以通过覆盖文件config/autoload/zfcuser.global.php中的设置来告诉 ZfcUser 轻松使用我自己的类:
'user_entity_class' => 'MyApp\Entity\MyUser',
但到目前为止,我还没有找到一种简单的方法来告诉 ZfcUser 使用我的映射器类。
我只发现映射器是由 ZfcUser\Module::getServiceConfig() 创建的,在其中,我可以看到映射器是从其工厂函数返回的:
// ...
public function getServiceConfig()
{
return array(
// ...
'factories' => array(
// ...
'zfcuser_user_mapper' => function ($sm) {
$options = $sm->get('zfcuser_module_options');
$mapper = new Mapper\User();
$mapper->setDbAdapter($sm->get('zfcuser_zend_db_adapter'));
$entityClass = $options->getUserEntityClass();
$mapper->setEntityPrototype(new $entityClass);
$mapper->setHydrator(new Mapper\UserHydrator());
return $mapper;
},
// ...
有没有办法让 ZfcUser 使用我的自定义用户映射器类?