已编辑(代码已更新并为他人工作)
对于正在发生的事情的总体想法。
我正在尝试从控制器中的视图访问发布数据,而不刷新页面。
为此,我通过使用ViewHelper调用下面的服务来执行页面控制器,然后将其转发回控制器;之后我可以在页面控制器中管理发布的数据。
一切正常,除了最后一步forward()
,我收到错误 Call to undefined methodAlbumModule\Service\postAlbumService::forward()
我知道我必须实现ServiceLocatorAwareInterface
才能使用forward()
该类,但我所写的似乎不起作用。
<?php
namespace AlbumModule\Service;
use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
class postAlbumService implements
ServiceLocatorAwareInterface
{
protected $services;
public function __construct() {
echo '<script>console.log("postAlbumService is Started")</script>';
}
public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
{
$this->services = $serviceLocator;
}
public function getServiceLocator()
{
return $this->services;
}
public function test(){
$cpm = $this->getServiceLocator()->get('controllerpluginmanager');
$fwd = $cpm->get('forward');
echo '<script>console.log("postAlbumService TEST() is Started")</script>';
return $fwd->dispatch('newAlbum', array('action' => 'submitAlbum'));
}
}
好像我只是对 forward() 类有依赖问题,但我不确定问题是什么。
编辑-这是我postAlbumService
从 viewHelper调用的方式
<?php
namespace AlbumModule\View\Helper;
use Zend\View\Helper\AbstractHelper;
class invokeIndexAction extends AbstractHelper
{
protected $sm;
public function test()
{
$this->sm->getServiceLocator()->get('AlbumModule\Service\postAlbumService')->test();
}
public function __construct($sm) {
$this->sm = $sm;
}
}
在将依赖项注入服务后,有什么方法可以调用所请求的服务中的特定类?