1

我有 2 个应用程序,Intranet 和 Extranet。Extranet 应用程序不直接与数据库通信,仅与 Web 服务通信。Intranet 应用程序与数据库正常。

我需要使用 SOAP 与我的数据库进行通信,所以我有 View -> Controller -> Service -> Entity。

为了与我正在使用的服务进行通信:

[控制器]

$client = new Client("my_soap_address");
$user = $client->test();

[服务]

public function test()
{
   $res = $this->em->getRepository("my_entity")->fetchPairs();
   return $res;
}

没有 SOAP,完美运行!使用 SOAP,返回此错误:

Call to a member function getRepository() on a non-object

如果我的服务返回一个字符串、整数或布尔值:

[服务]

public function test()
{
   return "is OK";
}

我的 SOAP 工作正常。

问题是 getRepository()、getReference() 等任何方法。但我需要这些方法来从我的数据库中获取或放置信息。

请问,有人可以帮忙解决这个问题吗?

非常感谢!

ps.:我在控制器和服务之间有一个带有handleWSDL 和handleSOAP 的控制器。

4

1 回答 1

1

我解决了我的问题!我需要发送带有 Soap 的 EntityManager 以进行服务。

我们走吧:

在我的肥皂控制器中:

use Path\of\my\service as MyService;

public function handleSOAP($class, $url) {
    $soap = new Server($url."?wsdl");
    $soap->setClass($class);
    $soap->setObject(new MyService($this->getServiceLocator()->get('Doctrine\ORM\EntityManager')));
    $soap->handle();
}

对于作品,我需要 setObject 方法中的实例,我在 getServiceConfig() 中的 Module.php 文件中实例化我的服务。

所以,现在好了!

谢谢!

于 2013-10-03T15:13:28.227 回答