mercredi 22 avril 2020

PHP Laravel 5 SoapServer using Zope, issue with response formatting

So the issue I am having is formatting the response array as below Current Output:

<user>
    <userId>4562</userId>
    <userName>M00001</userName>
    <languageId>27</languageId>
    <languageCode>en</languageCode>
    <acls>
        <acl>
            <ns1:acl>
                <identity>SCP</identity>
                <permissions>R</permissions>
            </ns1:acl>
            <ns1:acl>
                <identity>SCP.EVDS.ACCOUNT.HISTORY</identity>
                <permissions>RWCD</permissions>
            </ns1:acl>
        </acl>
    </acls>
</user>

Expected Output:

<user>
    <userId>4562</userId>
    <userName>M00001</userName>
    <languageId>27</languageId>
    <languageCode>en</languageCode>
    <acls>
        <acl>
            <identity>SCP</identity>
            <permissions>R</permissions>
        </acl>
        <acl>
            <identity>SCP.EVDS.ACCOUNT.HISTORY</identity>
            <permissions>RWCD</permissions>
        </acl>
    </acls>
</user>

Using Zoap server i have created 2 classes to handle the incoming array which looks like $acls->acl(arrayOfacl)

My Classfiles are:

<?php

namespace App\Http\Controllers\Types\Response;

class acls
{
    /**
     * @var App\Http\Controllers\Types\Response\acl[] ___FOR_ZEND_minOccurs=0
     */
    public $acl = null;

    /**
     * KeyValue constructor.
     * @param App\Http\Controllers\Types\Response\acl[] $acl
     */
    public function __construct($acl = '[]')
    {

        $this->acl = $acl;
    }
}
<?php

namespace App\Http\Controllers\Types\Response;

class acl
{
    /**
     * @var string
     */
    public $identity = '';
    /**
     * @var string
     */
    public $permissions = '';
    /**
     * KeyValue constructor.
     */
    public function __construct($identity='', $permissions='')
    {
        $this->identity = $identity;
        $this->permissions = $permissions;
    }
}

and

<?php
namespace App\Http\Controllers\Types\Response;

class UserLogin
{
    /**
     * @var string ___FOR_ZEND_minOccurs=0
     */
    public $userId = null;
    /**
     * @var string ___FOR_ZEND_minOccurs=0
     */
    public $userName = null;
    /**
     * @var string ___FOR_ZEND_minOccurs=0
     */
    public $languageId = null;
    /**
     * @var string ___FOR_ZEND_minOccurs=0
     */
    public $languageCode = null;
    /**
     * @var App\Http\Controllers\Types\Response\acls ___FOR_ZEND_minOccurs=0
     */
    public $acls = null;
    /**
     * UserLogin constructor.
     */
    public function __construct($userId ='', $userName ='', $languageId= '', $languageCode='', $acls = '')
    {
        $this->userId = $userId;
        $this->userName = $userName;
        $this->languageId = $languageId;
        $this->languageCode = $languageCode;
        $this->acls = $acls;

    }
}

I know it it should be a formatting error and have spent hours trying different methods to sort accordingly, any suggestions appreciated..



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire