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

时间:2013-12-30 22:29:57

标签: php zend-framework2

所以,我有一个管理模块,其中包含所有控制器,如用户,用户组,产品等。在 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);
    },

我在getServiceConfig方法尝试初始化 UserTable 用户后,得到一个空白页面,其中没有执行死亡。所以,这绝对是一个问题。如果这些类在Admin模块中,它可以正常工作。

按住Ctrl键单击这些类,以便找到它们。有没有办法从管理员的 Module.php 中调用这些?感谢。

1 个答案:

答案 0 :(得分:4)

尝试使用它,就像下面的

一样
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;
                },
            ),
        );

    }
}