が、それはObservationFactoryが呼び出されていないようにも、私はここZend Frameworkの2コントローラ、IコントローラにのServiceLocatorをpasssingています私の工場からFactroyInterface
があるモジュールのmodule.config.phpファイルに含まれているようです私ObservationController.php
class ObservationController extends AbstractActionController
{
private $em;
public function __construct($ob)
{
$this->em = $ob->get('doctrine.entitymanager.orm_default');
}
ここではObservationFactory.php
class ObservationFactory implements FactoryInterface
{
public function createService(ServiceLocatorInterface $serviceLocator)
{
$controller = new ObservationController($serviceLocator->getServicelocator());
return $controller;
}
}
とModule.config.php
01であります'controllers' => array(
'factories' => array(
'Observation\Controller\ObservationController' => 'Observation\Controller\ObservationFactory'
),
'invokables' => array(
'Observation\Controller\Observation'=> Controller\ObservationController::class
),
),
Missing argument 1 for Observation\Controller\ObservationController::__construct(), called in S:\xampp\htdocs\v3\vendor\zendframework\zend-servicemanager\src\AbstractPluginManager.php on line 207 and defined in S:\xampp\htdocs\v3\module\Observation\src\Observation\Controller\ObservationController.php on line 47
Notice: Undefined variable: ob in S:\xampp\htdocs\v3\module\Observation\src\Observation\Controller\ObservationController.php on line 49
Fatal error: Uncaught Error: Call to a member function get() on unknown in
をあなたにあなたのコントローラー工場エントリを変更するとどうなりますか'ObervationController :: class => ObervationControllerFactory :: class'?たぶんあなたのinvokablesはあなたの工場に問題があります。コントローラー配列内のinvokablesセクションを省略するとどうなりますか? – Marcel
はい、invokablesが問題であり、それを取り除いて今工場が動作します –
エンティティマネージャを取得するためだけにあなたのコントローラに 'ServiceLocatorInterface'を注入しているので、なぜあなたは適切な依存関係注入を使用せず、代わりにエンティティマネージャをコントローラに注入します? – boesing