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