Ваш Admin\LogsController
расширяет AbstractActionController.Но вы не используете его как AbstractActionController
!
. AbstractActionController обычно вызывается путем обработки запроса (http), в результате чего приложение ZF2 собирается направить запрос контроллеру и выполняет метод действия.Во время этой обработки экземпляр ServiceLocator / ServiceManager передается в контроллер.Это то, что вам не хватает.Следовательно, вы пытаетесь вызвать метод для нулевого объекта.
Вы не можете просто создать экземпляр ActionController
из другого ActionController.(конечно, это возможно, с большим количеством денег).Если вы используете его таким образом, вы должны убедиться, что новый экземпляр контроллера содержит экземпляр ServiceLocator, запроса, ответа и т. Д. *
Следует учитывать:
a) действительно ли Admin\LogsController
- это AbstractActionController в вашем приложении?(Я предполагаю, что это не так, соответственно ваш пример кода)
b) внедрить ServiceLocator в ваш пользовательский объект (LogsController) или очистить путь: внедрить экземпляр регистратора.
Пример:
public function getServiceConfig() {
return array(
'factories' => array(
'Admin\LogsController' => function ($sm) {
$logsController = new LogsController();
$logsController->setServiceLocator($sm); // you have to implement!
return $logsController;
},
);
}