Laravel / vue.js - попытка получить свойство не-объекта. может получить к нему доступ во vue, но не в laravel

У меня странная проблема, когда я не могу получить доступ к объекту в Laravel, но при передаче переменной в мой интерфейс Vue я могу получить доступ ко всему в нем.

Вот код, и вот что он производит ...

public function getPaymentStatus(Request $request) {

    $transaction = $this->midTest->getLatestTransaction();

    $url = "https://" . $transaction->url . $request->resourcePath;
    $url .= "?authentication.userId=" . $transaction->user_id;
    $url .= "&authentication.password=" . $transaction->password;
    $url .= "&authentication.entityId=" . $transaction->entity_id;

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // This should be set to true in production
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $responseData = curl_exec($ch);
    if(curl_errno($ch)) {
        return curl_error($ch);
    }
    curl_close($ch);

    return $responseData;
}

enter image description here

Однако если я сделаю это, я получу сообщение об ошибке.

return $responseData->data;

Trying to get property 'data' of non-object {"exception":"[object] (ErrorException(code: 0): Trying to get property 'data' of non-object at /Users/dallysingh/Projects/Laravel/app/Http/Controllers/MidTestController.php:196)

В моем интерфейсе Vue я могу console.log следующее и четко видеть все данные.

console.log(response.data);

Как я могу получить доступ к объекту в Laravel, поскольку я пытаюсь сохранить данные в таблице, прежде чем отправлять их на свой интерфейс Vue. Это то, что я хочу ...

public function getPaymentStatus(Request $request) {

    $transaction = $this->midTest->getLatestTransaction();

    $url = "https://" . $transaction->url . $request->resourcePath;
    $url .= "?authentication.userId=" . $transaction->user_id;
    $url .= "&authentication.password=" . $transaction->password;
    $url .= "&authentication.entityId=" . $transaction->entity_id;

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // This should be set to true in production
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $responseData = curl_exec($ch);
    if(curl_errno($ch)) {
        return curl_error($ch);
    }
    curl_close($ch);

    $this->midTest->updateLatestTransaction($responseData, $transaction);

    return $responseData;
}

public function updateLatestTransaction($response, $transaction) {
    $transaction = DB::table('transactions')
                        ->where('id', $transaction->id)
                        ->update(
                            ['transaction_id', $response->data['id']
                        ]);
}

вы можете сбросить $ responseData? laravel не может найти внутри него свойство данных

Teoman Tıngır 10.09.2018 11:08

Используйте Guzzle вместо этого чудовища curl_setopt. Удачи!

Kyslik 10.09.2018 11:19

@ HasanTıngır - Когда я передаю $ responseData во внешний интерфейс Vue, я могу получить доступ к свойству данных, но не могу получить доступ к нему через Laravel. Я пытаюсь передать responseData модели, чтобы вставить данные в таблицу, но она не работает, потому что не может ее найти.

Dally 10.09.2018 11:25

Код был обновлен и теперь включает Модель.

Dally 10.09.2018 11:30
1
4
597
1

Ответы 1

$ responseData, вероятно, является строкой json в PHP.

пытаться

$responseDataDecoded = json_decode($responseData);

Теперь переменная $ responseDataDecoded является объектом.

В laravel вы также можете использовать функцию dd ($ variable) для сброса переменной. Например, для декодированной строки json:

dd($responseDataDecoded);

Если я хочу получить доступ к чему-либо из объекта, просто сделаю следующее ... $ responseDataDecoded-> data ['id']

Dally 10.09.2018 11:31

Пробовал то, что вы сказали, и теперь я получаю следующую ошибку при попытке вставить значение в таблицу с помощью функции Model ... Неопределенное свойство: stdClass :: $ data {"exception": "[объект] (ErrorException (code : 0): Неопределенное свойство: stdClass :: $ data в /Users/dallysingh/Projects/Laravel/app/Http/Models/MidTest.p‌ hp: 46)

Dally 10.09.2018 11:33

Существует ли свойство данных в de $ responseDataDecoded. Вы можете проверить с помощью функции dd ($ variable), какие свойства содержат переменные.

Jacob 10.09.2018 16:19

Другие вопросы по теме