我有一个ZF3项目和一个访问单个postgres表的索引控制器。我有通常的工厂设置
return array(
'factories' => [
Model\IsdepotstockTable::class => function($container) {
$tableGateway = $container->get(Model\IsdepotstockTableGateway::class);
return new Model\IsdepotstockTable($tableGateway);
},
Model\IsdepotstockTableGateway::class => function ($container) {
$dbAdapter = $container->get(AdapterInterface::class);
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Model\Isdepotstock());
return new TableGateway('isdepotstock', $dbAdapter, null, $resultSetPrototype);
},
],
我也有我的控制器构造函数:
public function __construct(IsdepotstockTable $table)
{
$this->isdepotstockTable = $table;
}
我的问题是,如果我想访问第二个表,如何修改构造语句来处理多个表?显然,我必须为我理解的附加表添加工厂。
我查看过ZF3文档,但找不到任何示例。
由于
答案 0 :(得分:1)
我相信你正在寻找一个控制器工厂函数,它将实例化控制器并将参数传递给构造函数。
在__construct()
方法中添加第二个表类作为第二个参数,然后在module.config.php
中创建工厂。
<?php
use Zend\ServiceManager\Factory\InvokableFactory;
return [
// ...
'controllers' => [
'factories' => [
Controller\IndexController::class => InvokableFactory::class
// Put other controllers registration here
],
],
// ...
];
这是一本关于ZF3的免费开源书籍,我链接到控制器注册部分供您参考。祝好运! https://olegkrivtsov.github.io/using-zend-framework-3-book/html/en/Model_View_Controller/Controller_Registration.html