Не может отображать ссылки на страницы в режиме блейда

У меня есть ответ JSON (ответ выглядит как это), который отображает 20 источников новостей в моем представлении лезвия, я хочу использовать разбиение на страницы, чтобы на каждой странице отображалось только 10 результатов новостей, это мой контроллер:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;

class NewsController extends Controller
{
    public function index(){
        $page = request()->has('page') ? request('page') : 1;
        $perPage = request()->has('per_page') ? request('per_page') : 10;
        $offset = ($page * $perPage) - $perPage;
        $api = env('API_KEY');
        $url = "https://newsapi.org/v2/top-headlines?country=id&apiKey=${api}";
        $news = [];
        $client = new \GuzzleHttp\Client();
        $res = $client->get($url);
        if ($res->getStatusCode() == 200){
            $news = collect(json_decode(file_get_contents($url), true));
        }else{
            return "error";
        }
        $results =  new LengthAwarePaginator(
            $news->slice($offset, $perPage),
            $news->count(),
            $perPage,
            $page,
            ['path' => request()->url(), 'query' => request()->query()]
        );
        return view('news', compact('results'));
    }
}

и это мое представление лезвия, где в нижнем div я использую $results->links() для отображения ссылки на следующую страницу для просмотра других 10 результатов, но это не работает, поскольку вместо этого продолжает показывать все результаты новостей .

<html lang = "en">
<head>
    <meta charset = "UTF-8">
    <meta http-equiv = "X-UA-Compatible" content = "IE=edge">
    <meta name = "viewport" content = "width=device-width, initial-scale=1.0">
    <link href = "./app.css" rel = "stylesheet">
    <title>laravel news app</title>
</head>
<body>
    <div>
        <h1 class = "head__text font-sans text-4xl m-3">News App</h1></h1>
        <div class = "all__news">
            @foreach($results['articles'] as $berita)
            <div class = "news">
            <h1 class = "news_title">{{$berita['title']}}</h1>
            <p class = "news__desc">{{$berita['description']}}</p>
            <span class = "news__author">{{$berita['author']}}</span><br>
            <span class = "news__published">{{$berita['publishedAt']}}</span>
            <span class = "news__source">{{$berita['source']['name']}}</span><br>
            <a href = "{{ $berita['url'] }}" target = "_blank" class = "news__url">Link</a>
            </div>
            @endforeach
        </div>
        <div
        {{$results->links()}}
        </div>
    </div>    
</body>
</html>

это единственный маршрут, который у меня есть

Route::get('/', [NewsController::class, 'index']);

Попробуйте определить имя представления пагинатора. Что-то вроде: {{ $results->links('view.name') }}

Ronodip Basak 19.03.2022 23:05
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
13
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно собирать статьи из результата API, а не самого результата API.

$news = collect((json_decode(file_get_contents($url), true))['articles']);
//or
$news = collect((json_decode(file_get_contents($url)))->articles);

и в цикле просмотра зациклить paginator напрямую

@foreach($results as $berita)

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