листинг данных laravel json

avatar
livosoft
1 июля 2021 в 20:15
57
2
0

Я получаю данные в формате json, но не могу перечислить их в таблице данных

Файл контроллера

 public function index()
{
      $data = Http::get('https://jsonplaceholder.typicode.com/posts');
    return view('frontend.default.index', ['data'=> $data->json()]);
}

Просмотреть файл

      <table id="table_id" class="display">
        <thead>
            <tr>
                <th>Column 1</th>
                <th>Column 2</th>
            </tr>
        </thead>
        <tbody>
            @foreach ($data as $key => $value)
            <tr>
                <td>
                {{$value->title}} // not working
               </td>
                <td>Row 1 Data 2</td>
            </tr>
            @endforeach
        </tbody>
    </table>

enter image description here

Источник
GusMilky
1 июля 2021 в 20:52
0

Содержимое $data не является объектом. Проверить, что находится внутри $data, можно с помощью функции dd(), например в контроллере: `$data = Http::get('jsonplaceholder.typicode.com/posts'); dd($data);` , и в браузере будет напечатано содержимое. Похоже, это массив строк, но сначала нужно проверить

GusMilky
1 июля 2021 в 20:56
0

И прочитайте это, чтобы улучшить свой вопрос, чтобы кто-то мог дать вам правильный ответ;)

Ответы (2)

avatar
Enes Zorkol
1 июля 2021 в 21:03
0

Данные, которые вы извлекаете из json, представляют собой массив. Вы пытаетесь печатать как объект во время печати.

Решение

 @foreach ($data as $key => $value)
        <tr>
            <td>
            {{$value['title']}} // not working
           </td>
            <td>Row 1 Data 2</td>
        </tr>
        @endforeach
avatar
Prakhar Gyawali
1 июля 2021 в 23:19
0

в основном вы используете типы данных JSON для ajax, поскольку они не могут передавать данные массива или объекта без JSON, но когда вы напрямую печатаете значение в представлении, вам не нужно преобразовывать данные в JSON. вот как вы можете его использовать.

    public function index()
{

      $data = Http::get('https://jsonplaceholder.typicode.com/posts');
//check if data is being received
    if(!$data)
      return back()->with('error', 'no data received');
    return view('frontend.default.index', compact('data'));

}

и в передней части......

<table id="table_id" class="display">
        <thead>
            <tr>
                <th>Column 1</th>
                <th>Column 2</th>
            </tr>
        </thead>
        <tbody>
            @foreach ($data as $key => $value)
            <tr>
                <td>
                {{$value->title}}
               </td>
                <td>Row 1 Data 2</td>
            </tr>
            @endforeach
        </tbody>
    </table>

или

 <table id="table_id" class="display">
        <thead>
            <tr>
                <th>Column 1</th>
                <th>Column 2</th>
            </tr>
        </thead>
        <tbody>
            @foreach ($data as $key => $value)
            <tr>
                <td>
                {{$value['title']}}
               </td>
                <td>Row 1 Data 2</td>
            </tr>
            @endforeach
        </tbody>
    </table>