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

#37 Patricia Lebsack

Provident vel ut sit ratione est

Debitis et eaque non officia sed nesciunt pariatur vel voluptatem iste vero et ea numquam aut expedita ipsum nulla in voluptates omnis consequatur aut enim officiis in quam qui

Julianne.OConner@kory.org Robel-Corkery
#38 Patricia Lebsack

Explicabo et eos deleniti nostrum ab id repellendus

Animi esse sit aut sit nesciunt assumenda eum voluptas quia voluptatibus provident quia necessitatibus ea rerum repudiandae quia voluptatem delectus fugit aut id quia ratione optio eos iusto veniam iure

Julianne.OConner@kory.org Robel-Corkery
#39 Patricia Lebsack

Eos dolorem iste accusantium est eaque quam

Corporis rerum ducimus vel eum accusantium maxime aspernatur a porro possimus iste omnis est in deleniti asperiores fuga aut voluptas sapiente vel dolore minus voluptatem incidunt ex

Julianne.OConner@kory.org Robel-Corkery
#40 Patricia Lebsack

Enim quo cumque

Ut voluptatum aliquid illo tenetur nemo sequi quo facilis ipsum rem optio mollitia quas voluptatem eum voluptas qui unde omnis voluptatem iure quasi maxime voluptas nam

Julianne.OConner@kory.org Robel-Corkery
#41 Chelsey Dietrich

Non est facere

Molestias id nostrum excepturi molestiae dolore omnis repellendus quaerat saepe consectetur iste quaerat tenetur asperiores accusamus ex ut nam quidem est ducimus sunt debitis saepe

Lucio_Hettinger@annie.ca Keebler LLC
#42 Chelsey Dietrich

Commodi ullam sint et excepturi error explicabo praesentium voluptas

Odio fugit voluptatum ducimus earum autem est incidunt voluptatem odit reiciendis aliquam sunt sequi nulla dolorem non facere repellendus voluptates quia ratione harum vitae ut

Lucio_Hettinger@annie.ca Keebler LLC
#43 Chelsey Dietrich

Eligendi iste nostrum consequuntur adipisci praesentium sit beatae perferendis

Similique fugit est illum et dolorum harum et voluptate eaque quidem exercitationem quos nam commodi possimus cum odio nihil nulla dolorum exercitationem magnam ex et a et distinctio debitis

Lucio_Hettinger@annie.ca Keebler LLC
#44 Chelsey Dietrich

Optio dolor molestias sit

Temporibus est consectetur dolore et libero debitis vel velit laboriosam quia ipsum quibusdam qui itaque fuga rem aut ea et iure quam sed maxime ut distinctio quae

Lucio_Hettinger@annie.ca Keebler LLC
#45 Chelsey Dietrich

Ut numquam possimus omnis eius suscipit laudantium iure

Est natus reiciendis nihil possimus aut provident ex et dolor repellat pariatur est nobis rerum repellendus dolorem autem

Lucio_Hettinger@annie.ca Keebler LLC

Build your own data page

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

Back to demos