Php 来自另一个模块的ZF2 getServiceConfig()

Php 来自另一个模块的ZF2 getServiceConfig(),php,zend-framework2,Php,Zend Framework2,因此,我有一个管理模块,其中包含所有控制器,如用户、用户组、产品等。在module.php中有一个getServiceConfig()方法,该方法为控制器设置所有适当的数据库表。这很好 我的问题是模型(例如User.php和UserTable.php)。理想情况下,我希望这些都来自它们自己的独立模块,这样管理模块就不会被文件完全淹没 当我这样编写Module.php时: <?php namespace Admin; use User\Model\User; use User\Model

因此,我有一个管理模块,其中包含所有控制器,如用户、用户组、产品等。在module.php中有一个getServiceConfig()方法,该方法为控制器设置所有适当的数据库表。这很好

我的问题是模型(例如User.php和UserTable.php)。理想情况下,我希望这些都来自它们自己的独立模块,这样管理模块就不会被文件完全淹没

当我这样编写Module.php时:

<?php

namespace Admin;

use User\Model\User;
use User\Model\UserTable;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\TableGateway;
use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
use Zend\Authentication\Adapter\DbTable as DbTableAuthAdapter;

class Module implements AutoloaderProviderInterface {

//Some other methods

public function getServiceConfig() {
    return array(
        'factories' => array(
            'User\Model\UserTable' => function($sm) {
        $tableGateway = $sm->get('UserTableGateway');
        $table = new UserTable($tableGateway);
        return $table;
    },
            'UserTableGateway' => function($sm) {
        $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
        $resultSetPrototype = new ResultSet();
        $resultSetPrototype->setArrayObjectPrototype(new User());
        return new TableGateway('user', $dbAdapter, null, $resultSetPrototype);
    },

试着像下面那样简单地使用它

class Module
{

    public function getServiceConfig() {
        return array(
            'factories' => array(
                'User\Model\UserTable' => function($sm) {
                    $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
                    $table = new \User\Model\UserTable($dbAdapter);
                    return $table;
                },
            ),
        );

    }
}

试着像下面那样简单地使用它

class Module
{

    public function getServiceConfig() {
        return array(
            'factories' => array(
                'User\Model\UserTable' => function($sm) {
                    $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
                    $table = new \User\Model\UserTable($dbAdapter);
                    return $table;
                },
            ),
        );

    }
}

请向我显示抛出错误的文本用户是活动模块吗?你在用classmap吗?还显示来自管理和用户的
getAutoloaderConfig
方法
Module
类。在这种情况下,用户模块需要在管理模块之前加载。控制器等应该仍然属于UserModule tho,AdminModule应该用于为UserModule提供管理接口和AccessControl/RoleControl,但这是另一个主题:)@Sam这是正确的,也是它未加载的原因。我现在也重新安排了控制器,使其位于各自的模块中。谢谢。请给我看看抛出的错误用户的文本是活动模块吗?你在用classmap吗?还显示来自管理和用户的
getAutoloaderConfig
方法
Module
类。在这种情况下,用户模块需要在管理模块之前加载。控制器等应该仍然属于UserModule tho,AdminModule应该用于为UserModule提供管理接口和AccessControl/RoleControl,但这是另一个主题:)@Sam这是正确的,也是它未加载的原因。我现在也重新安排了控制器,使其位于各自的模块中。谢谢