Как передать многомерный массив в SOAP в PHP - PullRequest
0 голосов
/ 12 февраля 2020

Мне нужно передать многомерный массив в функцию soap. Но я не знаю, как должна выглядеть структура массива.

Вот выдержка из WSDL:

<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="FunctionCode" type="xsd:int"/>
<xsd:element minOccurs="0" maxOccurs="1" name="Mandator" type="xsd:int"/>
xsd:element minOccurs="0" maxOccurs="1" name="Material" type="vt:ArrayOfCallMaterial"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

ArrayOfCallMaterial:

<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="CallMaterial" type="vt:CallMaterial"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CallMaterial">
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1" name="id" type="xsd:string"/>
<xsd:element minOccurs="1" maxOccurs="1" name="quantity" type="xsd:float"/>
</xsd:sequence>
</xsd:complexType>

Вот как я строю свой параметр:

$requestParams = array(
            'FunctionCode' => 1,
            'Mandator' => 1,
            'Material' => $material,
);

Массив материалов выглядит так:

Array
                (
                    [0] => Array
                        (
                            [id] => 55A000009
                            [quantity] => 1.0000
                        )

                    [1] => Array
                        (
                            [id] => 55A000001
                            [quantity] => 10.0000
                        )

                )

чем я вызываю Сервис:

$response =  json_decode(json_encode($this->client->call($requestParams)), true);

проблема в том, что передается только первый элемент массива. Может ли кто-нибудь помочь мне построить правильную структуру?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...