将 ZF2 与教义 2 一起使用。
为了应用程序的需要,我objectmanager
作为变量($om
)传递了return new ViewModel
所以我可以在我的观点中使用它:
$om->getRepository('SchemaEntityCategory')->findBy(.....
让我感到困惑的是:
1) 我是否违反了 MVC 规则?(因为有人说这是一种不好的做法,而另一些人则不是)
2)使用这种策略开发应用程序时,我会遇到任何问题吗?
- 是的,你做
- 违反编码标准总是有负面的副作用
控制器的工作是将所需的数据传递到视图中。为此,控制器与模型交互。
public function fooAction()
{
return new ViewModel([
'entities' => $this->getObjectManager()->findBy([
'foo' => 'bar'
])
]);
}
这几乎就是你将要做到的。您的下一个问题应该是:getObjectManager()
做什么或如何将ObjectManager
正确地注入控制器?
答案很简单:你必须使用控制器工厂
//module.config.php
'controllers' => [
'factories' => [
'YourNamespaceControllerFooController' => function($cpm) {
$ctrl = new FooController();
$ctrl->setObjectManager(
$cpm->getServiceLocator()->get('DoctrineORMEntityManager')
);
return $ctrl;
}
]
]
仅此而已。现在,您对要实现的目标有一个非常干净的设置;)