Laravel / Vue.js - Попытка получить свойство необъекта. Может получить доступ к нему в Vue, но не Laravel - PullRequest
0 голосов
/ 10 сентября 2018

У меня странная проблема, когда я не могу получить доступ к объекту в 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;

Попытка получить свойство 'данные' необъекта {"исключение": "[объект] (ErrorException (код: 0): Попытка получить свойство 'data' не-объекта в /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']
                        ]);
}

1 Ответ

0 голосов
/ 10 сентября 2018

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

попробовать

$responseDataDecoded = json_decode($responseData);

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

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

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