SOAP ответ.Как справиться с этим? - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть эта функция:

public function index(Request $request)
    {
        try {
            self::setWsdl('http://000.000.00.00/SomeServices.asmx?WSDL');
            $this->service = InstanceSoapClient::init();
            $params = [
                'sGrupo' => "0".$request->sGrupo,
                'iCota' => $request->iCota,
                'iIdERP' => $request->iIdERP
            ];
            $response = $this->service->ROS_ExtratoContaCorrente($params);
            return view('layouts.extrato', compact('response'));
        } catch (\Exception $e) {
            return $e->getMessage();
        }
    }

И результат с использованием

dd($response);

Я получаю:

{#198 ▼
  +"ExtratoContaCorrente": {#199 ▼
    +"NOME-CLIENTE": "JON DOE"
    +"CODIGO-GRUPO": "06275"
    +"NUMERO-COTA": 45
    +"NOME-LOGRADOURO": "STREET JUNIOR"
    +"NUMERO-LOGRADOURO": "519"
    +"BAIRRO": "PRESIDENTE ROOSEVELT"
    +"CIDADE": "UBERLANDIA"
    +"UF": "MG"
    +"CEP": "00000000"
    +"NUMERO-TELEFONE": "000 000000000"
    +"CODIGO-BEM": "6156"
    +"VALOR-BEM": 12000.0
    +"PERC-TOTAL-PAGO": 31.7396
    +"VALOR-QUITACAO": 10090.62
    +"PERC-TOAL-PAGAR": 0.5546
    +"PARCELAS-PAGAS": {#205 ▶}
    +"PARCELAS-PENDENTES": {#207 ▶}
    +"PROXIMA-ASSEMBLEIA": {#209 ▶}
    +"RESULT-ULTIMA-ASSEMB": {#210 ▶}
    +"CODIGO-RETORNO": 0
    +"DESCRICAO-RETORNO": ""
  }
}

Как мне обработать эти данные для рендерингана вид?Прямо сейчас я получаю эту ошибку: Это мое мнение:

@extends('app')
@section('content')

@endsection
@section('scripts')
<script>
    var vue = new Vue({
        el: '#app',
        data: {
            response: {!! $response !!}
        }
    })
</script>
ErrorException (E_ERROR)
Object of class stdClass could not be converted to string (View: /Users/marcellopato/Sites/primorossicontemplado/resources/views/layouts/extrato.blade.php)
Previous exceptions
Object of class stdClass could not be converted to string

Что это за ответ?Объект, верно?Почему я могу просто сжать как переменную и отправить в представление?

Большое спасибо!

1 Ответ

0 голосов
/ 07 февраля 2019

То, что вы получаете в ответ, является объектом, для лучшего использования в блейдах попробуйте привести его к массиву, выполнив следующее:

$response = json_decode(json_encode($response), true);

или

$response = (array) $response;

Перед передачейк представлению и:

public function index(Request $request)
{
    try 
    {

        self::setWsdl('http://000.000.00.00/SomeServices.asmx?WSDL');

        $this->service = InstanceSoapClient::init();

        $params        = [
            'sGrupo' => "0" . $request->sGrupo,
            'iCota'  => $request->iCota,
            'iIdERP' => $request->iIdERP,
        ];

        $response = $this->service->ROS_ExtratoContaCorrente($params);

        $response = json_decode(json_encode($response), true);

        return view('layouts.extrato', compact('response'));

    } catch (\Exception $e) {

        return $e->getMessage();
    }
}

Объяснение:

Данный объект имеет знак + в качестве префикса свойства foreach, что означает, что эти свойства являются открытыми свойствамипоэтому приведение его к строке json, а затем анализ строки json в массив будет работать.

PS, если ответ объекта имеет - знаков (частные свойства), помните, что при синтаксическом анализе объекта array или json_encode json_decode не будут работать должным образом.

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