foreach laravel error после использования curl json output

это мои коды контроллера

$curl = new Curl();
$curl->setUrl('http://localhost:8001/scrape');
$curl->execute();
$data = json_decode(file_get_contents('output.json'));
return view('data-scraping', compact('data'));

Я использую скребок данных в этом 8001-порту, это мой output.json

[
    {
        "rank": 1,
        "title": "Did Facebook’s faulty data push publishers to make terrible decisions on video?",
        "url": "http://www.niemanlab.org/2018/10/did-facebooks-faulty-data-push-news-publishers-to-make-terrible-decisions-on-video/",
        "points": 59,
        "username": "laurex",
        "comments": 1
    }
]

и наконец, что foreach в моем шаблоне клинка

@foreach($data as $key => $value)
    <div class="col-sm-12">
        <a href="{!! $value->url !!}">
            <h3 class="title">{!! $value->title !!}</h3>
        </a>
        <p class="text-muted">
            <strong>Points :</strong> {!! $value->points !!}
            <strong>Comments :</strong> {!! $value->comments !!}
        </p>
        <p class="text-muted">Posted by <a href="#">{!! $value->username !!}</a></p>
    </div>
@endforeach

но когда я загружаю свою веб-страницу, проблема

Invalid argument supplied for foreach() (View: F:XAMPPhtdocs	est
esourcesviewsdata-scraping.blade.php)

когда я использую dd() в моем представлении лезвия возвращают none но есть файл output.json.

если я комментирую функции curl и использовал предварительно созданный json-файл, который отлично работает

как я могу справиться с этим?

Всего 2 ответа


Попробуйте передать true как второй параметр json_decode. $ data = json_decode (file_get_contents ('output.json'), true);


Вероятно, вам нужно установить параметр CURLOPT_RETURNTRANSFER . Что-то вроде curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); , Если вы все еще не получаете ответа от этого, у вас, вероятно, есть проблема с расшифровкой json, которая потребует от вас использования метода json_last_error для устранения неполадок.


Есть идеи?

10000