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

#28 Clementine Bauch

Delectus ullam et corporis nulla voluptas sequi

Non et quaerat ex quae ad maiores maiores recusandae totam aut blanditiis mollitia quas illo ut voluptatibus voluptatem similique nostrum eum

Nathan@yesenia.net Romaguera-Jacobson
#29 Clementine Bauch

Iusto eius quod necessitatibus culpa ea

Odit magnam ut saepe sed non qui tempora atque nihil accusamus illum doloribus illo dolor eligendi repudiandae odit magni similique sed cum maiores

Nathan@yesenia.net Romaguera-Jacobson
#30 Clementine Bauch

A quo magni similique perferendis

Alias dolor cumque impedit blanditiis non eveniet odio maxime blanditiis amet eius quis tempora quia autem rem a provident perspiciatis quia

Nathan@yesenia.net Romaguera-Jacobson
#31 Patricia Lebsack

Ullam ut quidem id aut vel consequuntur

Debitis eius sed quibusdam non quis consectetur vitae impedit ut qui consequatur sed aut in quidem sit nostrum et maiores adipisci atque quaerat voluptatem adipisci repudiandae

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

Doloremque illum aliquid sunt

Deserunt eos nobis asperiores et hic est debitis repellat molestiae optio nihil ratione ut eos beatae quibusdam distinctio maiores earum voluptates et aut adipisci ea maiores voluptas maxime

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

Qui explicabo molestiae dolorem

Rerum ut et numquam laborum odit est sit id qui sint in quasi tenetur tempore aperiam et quaerat qui in rerum officiis sequi cumque quod

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

Magnam ut rerum iure

Ea velit perferendis earum ut voluptatem voluptate itaque iusto totam pariatur in nemo voluptatem voluptatem autem magni tempora minima in est distinctio qui assumenda accusamus dignissimos officia nesciunt nobis

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

Id nihil consequatur molestias animi provident

Nisi error delectus possimus ut eligendi vitae placeat eos harum cupiditate facilis reprehenderit voluptatem beatae modi ducimus quo illum voluptas eligendi et nobis quia fugit

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

Fuga nam accusamus voluptas reiciendis itaque

Ad mollitia et omnis minus architecto odit voluptas doloremque maxime aut non ipsa qui alias veniam blanditiis culpa aut quia nihil cumque facere et occaecati qui aspernatur quia eaque ut aperiam inventore

Julianne.OConner@kory.org Robel-Corkery

Build your own data page

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

Back to demos