2014-03-06 71 views
1

我想用不同的表創建兩個控制器獲取記錄然後查看,編輯和更新它們我的第一個相冊控制器工作正常,但是當我創建另一個控制器時,它會給我錯誤。如何在zend 2中創建兩個不同表的控制器

enter image description here

+0

你能發佈一些你的代碼嗎? –

+2

它看起來像你沒有在服務管理器中設置你的'Album \ Model \ DemoTable'這樣的錯誤,請參閱教程如何爲'Album \ Model \ AlbumTable'完成 - > http://框架.zend.com /手動/ 2.2/EN /用戶引導/數據庫和 - models.html#使用-的ServiceManager以進行配置最表網關和 - 注射 - 進入最albumtable – Crisp

回答

1

您需要的服務經理註冊服務Album\Model\DemoTable;就像您現有的Album\Model\AlbumTable一樣。

The 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()類的表映射。

相關問題