SoapVar/Param et imbriquées, les éléments répétés dans le SAVON
Mon objectif est d'être en mesure de créer une requête soap qui peut contenir des éléments comme:
<flexFields>
<names>
<names>IAG Group</names>
<names>Ticket #</names>
</names>
</flexFields>
Cependant, chaque combinaison de soapvar et soapparam j'ai été capable de penser, soit il est impossible pour moi de reproduire le imbriquée "noms" de la balise. Je peux obtenir 1 sous balise comme ceci:
$flexFields = array(
'names'=> new SoapVar(
new SoapVar(array('names'=>'IAG Group'),SOAP_ENC_OBJECT),
SOAP_ENC_OBJECT)
);
Cela génère:
<flexFields xsi:type="ns2:SoapNamedValues">
<names xsi:type="names">
<names xsi:type="xsd:string">IAG Group</names>
</names>
</flexFields>
Mais n'importe quelle tentative que je fais pour obtenir les noms de balise de répéter génère un redoutable élément BIDON si j'utilise SOAP_ENC_OBJECT, ou wraps chaque élément d'un autre "objet" de l'élément si j'utilise SOAP_ENC_ARRAY, qui n'est également pas souhaitable.
Je sais que je pourrais juste créer manuellement ce que je veux et de le charger avec XSD_ANYXML, mais qui se rapproche de la ligne de vaincre le but de l'utilisation du SAVON de la bibliothèque.
Quelqu'un peut-il fournir un exemple de la façon de parfaitement équilibrer la soapvar/soapparam + tableau de nidification pour obtenir que cela fonctionne réellement? Ou suis-je tenter l'impossible avec PHP SOAP de la bibliothèque?
Vous devez vous connecter pour publier un commentaire.
J'ai couru dans le FAUX tag de problème également. Ma solution consiste à utiliser un ArrayObject en place de tableau de primitives. Les objets sont tous convertis à SoapVar objets. Il semble que le savon de la bibliothèque veut vraiment traiter avec des objets partout. J'ai une plus complète de l'article ici:
http://www.fischco.org/blog/2011/3/26/php-soapserver-objects-arrays-and-encoding.html
J'ai un problème similaire, essayez ceci:
Il crée et tableau de SoapVar objets ($Nom) et les place dans le BigNames objet, la création d'une sortie comme celle-ci:
Vous pouvez ensuite créer un autre SoapVar objet pour FlexFields, mais pour une raison quelconque vous ne pouvez pas placer un SoapVar objet directement dans un autre, il doit être stocké dans un tableau...
Je veux faire ceci:
Cela fonctionne: