Controller fetches, template renders

PagesController::pageDemosPosts() calls the JSONPlaceholder API using Cake\Http\Client, maps users by ID, and passes both arrays to this template via $this->set().

src/Controller/PagesController.php
public function pageDemosPosts(): void
{
    $page    = max(1, (int)$this->request->getQuery('page', 1));
    $perPage = 9;
    $http    = new Client(['timeout' => 5]);

    $postsResp = $http->get('https://jsonplaceholder.typicode.com/posts', [
        '_limit' => $perPage,
        '_start' => ($page - 1) * $perPage,
    ]);
    $usersResp = $http->get('https://jsonplaceholder.typicode.com/users');

    foreach ((array)$usersResp->getJson() as $user) {
        $userMap[(int)$user['id']] = $user;
    }

    $total      = (int)$postsResp->getHeaderLine('X-Total-Count');
    $totalPages = (int)ceil($total / $perPage);

    $this->set(compact('posts', 'userMap', 'error', 'page', 'totalPages'));
}

Posts from JSONPlaceholder

#46 Chelsey Dietrich

Aut quo modi neque nostrum ducimus

Voluptatem quisquam iste voluptatibus natus officiis facilis dolorem quis quas ipsam vel et voluptatum in aliquid

Lucio_Hettinger@annie.ca Keebler LLC
#47 Chelsey Dietrich

Quibusdam cumque rem aut deserunt

Voluptatem assumenda ut qui ut cupiditate aut impedit veniam occaecati nemo illum voluptatem laudantium molestiae beatae rerum ea iure soluta nostrum eligendi et voluptate

Lucio_Hettinger@annie.ca Keebler LLC
#48 Chelsey Dietrich

Ut voluptatem illum ea doloribus itaque eos

Voluptates quo voluptatem facilis iure occaecati vel assumenda rerum officia et illum perspiciatis ab deleniti laudantium repellat ad ut et autem reprehenderit

Lucio_Hettinger@annie.ca Keebler LLC
#49 Chelsey Dietrich

Laborum non sunt aut ut assumenda perspiciatis voluptas

Inventore ab sint natus fugit id nulla sequi architecto nihil quaerat eos tenetur in in eum veritatis non quibusdam officiis aspernatur cumque aut commodi aut

Lucio_Hettinger@annie.ca Keebler LLC
#50 Chelsey Dietrich

Repellendus qui recusandae incidunt voluptates tenetur qui omnis exercitationem

Error suscipit maxime adipisci consequuntur recusandae voluptas eligendi et est et voluptates quia distinctio ab amet quaerat molestiae et vitae adipisci impedit sequi nesciunt quis consectetur

Lucio_Hettinger@annie.ca Keebler LLC
#51 Mrs. Dennis Schulist

Soluta aliquam aperiam consequatur illo quis voluptas

Sunt dolores aut doloribus dolore doloribus voluptates tempora et doloremque et quo cum asperiores sit consectetur dolorem

Karley_Dach@jasper.info Considine-Lockman
#52 Mrs. Dennis Schulist

Qui enim et consequuntur quia animi quis voluptate quibusdam

Iusto est quibusdam fuga quas quaerat molestias a enim ut sit accusamus enim temporibus iusto accusantium provident architecto soluta esse reprehenderit qui laborum

Karley_Dach@jasper.info Considine-Lockman
#53 Mrs. Dennis Schulist

Ut quo aut ducimus alias

Minima harum praesentium eum rerum illo dolore quasi exercitationem rerum nam porro quis neque quo consequatur minus dolor quidem veritatis sunt non explicabo similique

Karley_Dach@jasper.info Considine-Lockman
#54 Mrs. Dennis Schulist

Sit asperiores ipsam eveniet odio non quia

Totam corporis dignissimos vitae dolorem ut occaecati accusamus ex velit deserunt et exercitationem vero incidunt corrupti mollitia

Karley_Dach@jasper.info Considine-Lockman

Build your own data page

Add a method to PagesController, fetch from any API or database, and pass to your template.

Back to demos