Php 来自另一个模块的ZF2 getServiceConfig()
因此,我有一个管理模块,其中包含所有控制器,如用户、用户组、产品等。在module.php中有一个getServiceConfig()方法,该方法为控制器设置所有适当的数据库表。这很好 我的问题是模型(例如User.php和UserTable.php)。理想情况下,我希望这些都来自它们自己的独立模块,这样管理模块就不会被文件完全淹没 当我这样编写Module.php时: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
<?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这是正确的,也是它未加载的原因。我现在也重新安排了控制器,使其位于各自的模块中。谢谢