2016-04-02 8 views
1

ich die BeSimple SoapBundle bin mit einem SOAP-Server zu erstellen, aber ich bin Probleme mit dem folgende Stück Code mit:BeSimple SoapBundle - Anmerkungen: Umgang mit zirkulären Referenzen in komplexen Typen

namespace AppBundle\Entity; 

use BeSimple\SoapBundle\ServiceDefinition\Annotation as Soap; 

/** 
* @Soap\Alias("Item") 
*/ 
class Item 
{ 

    /** 
    * @Soap\ComplexType("AppBundle\Entity\Item[]") 
    */ 
    protected $items; 

    /** 
    * @Soap\ComplexType("string") 
    */ 
    protected $name; 

Was ich brauche, um get ist ein Baum mit komplexen Elementen, aber ich erhalte einen zirkulären Referenzfehler, wenn ich die Annotation @Soap \ ComplexType ("AppBundle \ Entity \ Item []") verwende.

Eine Idee, wie kann ich mit dieser Situation umgehen?

Antwort

0

Ich fand schließlich eine Abhilfe für dieses Problem. Ich denke, dass es nicht notwendig sein sollte, aber es ist der beste und einzige Weg, den ich gefunden habe.

namespace AppBundle\Entity; 

use BeSimple\SoapBundle\ServiceDefinition\Annotation as Soap; 

/** 
* @Soap\Alias("ComplexItem") 
*/ 
class ComplexItem extends Item 
{   
    /** 
    * @Soap\ComplexType("AppBundle\Entity\Item") 
    */ 
    protected $item; 

    public function setItem($item) 
    { 
     $this->item = $item; 
    } 

namespace AppBundle\Entity; 

use BeSimple\SoapBundle\ServiceDefinition\Annotation as Soap; 

class Item 
{ 

    /** 
    * @Soap\ComplexType("string") 
    */ 
    protected $name; 

-Controller Anwendungsbeispiel:

/** 
* @Soap\Method("getItem") 
* @Soap\Result(phpType = "AppBundle\Entity\ComplexItem") 
*/ 
public function getItem() 
{ 
    $item = new ComplexItem(); 
    $complexItem = new ComplexItem(); 
    $complexItem->setItem($item); 

    return $complexItem; 
} 

Hoffe, dass es jemand hilft. Wenn Sie eine bessere Lösung kennen, lassen Sie es mich bitte wissen.

Verwandte Themen