2016-04-29 66 views
1

我已经下载了一个使用Halo 5 API的GitHub上的小项目。现在,如果我在网站上的MY玩家标签类型,它会给我这样的响应:获取API数据以显示在视图中 - Laravel 5.2

{"SpartanRank":114,"Xp":4291837,"TotalKills":12653,"TotalDeaths":10383,"Kd":1.218626601175,"GamesWon":480} 

我想在例如,不是一个JSON格式的视图单独显示出来。

这是3种方法我现在所拥有的:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use Psr\Http\Message\RequestInterface; 
use Psr\Http\Message\ResponseInterface; 
use Psr\Http\Message\UriInterface; 


use App\User; 
use GuzzleHttp; 
use Illuminate\Support\Facades\Input; 
use Illuminate\Validation\Validator; 
use App\Http\Controllers\Controller; 
use Symfony\Component\HttpFoundation\Response; 

class ImageController extends Controller { 


    public function generate(Request $request) { 


     // Validate email and password. 
     $this->validate($request, [ 
      'gamertag' => 'required|min:3', 
     ]); 

     $gamertag = Input::get('gamertag'); 

     // Get data from API 
     $playerStats = $this->getPlayerStats($gamertag); 
     $playerArray = $this->getPlayerArray($playerStats);    

     $spartanRank = json_decode($playerArray['SpartanRank'], true); 
    $XP = json_decode($playerArray['Xp'], true); 
    $TotalKills = json_decode($playerArray['TotalKills'], true); 
    $TotalHeadshots = json_decode($playerArray['TotalHeadshots'], true); 
    $TotalShotsFired = json_decode($playerArray['TotalShotsFired'], true); 
    $TotalDeaths = json_decode($playerArray['TotalDeaths'], true); 
    $Kd = json_decode($playerArray['Kd'], true); 
    $GamesWon = json_decode($playerArray['GamesWon'], true); 


    return view('stats') 
     ->with('spartanRank', $spartanRank) 
     ->with('XP', $XP) 
     ->with('TotalKills', $TotalKills) 
     ->with('TotalShotsFired', $TotalShotsFired) 
     ->with('TotalHeadshots', $TotalHeadshots) 
     ->with('TotalDeaths', $TotalDeaths) 
     ->with('Kd', $Kd) 
     ->with('GamesWon', $GamesWon); 

    } 


    protected function getPlayerStats($gamertag) { 

     $client = new GuzzleHttp\Client(); 

     $baseURL = 'https://www.haloapi.com/stats/h5/servicerecords/arena?players=' . $gamertag; 

     $res = $client->request('GET', $baseURL, [ 
      'headers' => [ 
       'Ocp-Apim-Subscription-Key' => 'MY SECRET KEY HERE' 
      ] 
     ]); 

     if($res->getStatusCode() == 200) 
     { 
      return $result = json_decode($res->getBody()); 
     } 

    } 


    protected function getPlayerArray($playerStats) { 
     $array = []; 
     $array['SpartanRank'] = $playerStats->Results[0]->Result->SpartanRank; 
     $array['Xp'] =   $playerStats->Results[0]->Result->Xp; 
     $array['TotalKills'] = $playerStats->Results[0]->Result->ArenaStats->TotalKills; 
     $array['TotalDeaths'] = $playerStats->Results[0]->Result->ArenaStats->TotalDeaths; 
     $array['Kd'] = $array['TotalKills']/$array['TotalDeaths']; 
     $array['GamesWon'] = $playerStats->Results[0]->Result->ArenaStats->TotalGamesWon; 

     return $array; 
    } 



} 

这是我的看法:

@extends('home') 

@section('content') 

    @include('pages.partials.nav') 

    Spartan Rank: {{ $spartanRank }} <br> 
Spartan XP: {{ $XP }}<br> 
Total Kills: {{ $TotalKills }}<br> 
Total Headshots: {{ $TotalHeadshots }}<br> 
Total Shots Fired: {{ $TotalShotsFired }}<br> 
Total Deaths: {{ $TotalDeaths }}<br> 
KD: {{ $Kd }}<br> 
Games Won: {{ $GamesWon }}<br> 

@stop 

所以如何显示例如该{ “TotalShotsFired”},进入一个视图,如:射击总数:{{$ player-> TotalShotsFired}} ????

回答

1

首先,如果你在顶部看到你的json数据,你没有显示任何父键。这样你就可以将其追加:

return response()->json(array('player' => $array)); 

所以,你有这样的:

{"player" : 
    { 
    "SpartanRank":114, 
    "Xp":4291837, 
    "TotalKills":12653, 
    "TotalDeaths":10383, 
    "Kd":1.218626601175, 
    "GamesWon":480 
    } 
} 

现在您可以访问鉴于阵列只需键入:

{{ $player->TotalKills }} 
+0

哪里是$阵列来从因为它给我的错误? – David

+0

你需要做这样的事情:$ array = {“SpartanRank”:114,“Xp”:4291837,“TotalKills”:12653,“TotalDeaths”:10383,“Kd”:1.218626601175,“GamesWon”:480}和然后将这个$数组传递给'player'=> $ array。 –

+0

我得到它的工作,检查我在底部生成方法做了什么,并在 – David

相关问题