如何在zend 2中创建具有不同表的两个控制器

时间:2014-03-06 12:32:59

标签: php zend-framework zend-framework2

我想用不同的表创建两个控制器获取记录然后查看,编辑和更新它们我的第一个相册控制器工作正常但是当我创建另一个控制器时它会给我错误。

enter image description here

1 个答案:

答案 0 :(得分:1)

您需要向服务管理器注册服务Album\Model\DemoTable;就像你现有的Album\Model\AlbumTable一样。

documentation shows you how to register the AlbumTable;

因此,通过修改该示例,这样的事情应该起作用:

 // Module.php
 public function getServiceConfig()
 {
     return array(
         'factories' => array(
             'Album\Model\DemoTable' =>  function($sm) {
                 $tableGateway = $sm->get('DemoTableGateway');
                 $table = new DemoTable($tableGateway);
                 return $table;
             },
             'Album\Model\AlbumTable' =>  function($sm) {
                 $tableGateway = $sm->get('AlbumTableGateway');
                 $table = new AlbumTable($tableGateway);
                 return $table;
             },
             'AlbumTableGateway' => function ($sm) {
                 $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
                 $resultSetPrototype = new ResultSet();
                 $resultSetPrototype->setArrayObjectPrototype(new Album());
                 return new TableGateway('album', $dbAdapter, null, $resultSetPrototype);
             },
            'DemoTableGateway' => function ($sm) {
                 $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
                 $resultSetPrototype = new ResultSet();
                 $resultSetPrototype->setArrayObjectPrototype(new Demo());
                 return new TableGateway('demo', $dbAdapter, null, $resultSetPrototype);
             },
         ),
     );
 }

显然,您需要将Demo()类替换为表所映射的实际类。