2013-09-27 64 views
1

我有2个应用程序,内联网和外联网。 Extranet应用程序不直接与数据库通信,仅与Web服务通信。 Intranet应用程序对于数据库是正常的。ZF2 + Doctrine 2 + SOAP

我需要使用SOAP与我的数据库进行通信,所以我有 查看 - >控制器 - >服务 - >实体。

对于服务通信我使用:

[控制器]

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

[服务]

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

不用肥皂,完美的作品! 使用SOAP,返回此错误:

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

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

[服务]

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

我SOAP正常工作。

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

请问,任何人都可以帮助解决这个问题吗?

非常感谢!

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

回答

1

我解决了我的问题! 我需要发送带有Soap的EntityManager作为服务工作。

让我们去:

在我SoapController:

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方法,我的服务实例,因为我对我的Module.php文件实例化getServiceConfig内()。

所以,现在没关系!

谢谢!