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

#19 Ervin Howell

Adipisci placeat illum aut reiciendis qui

Illum quis cupiditate provident sit magnam ea sed aut omnis veniam maiores ullam consequatur atque adipisci quo iste expedita sit quos voluptas

Shanna@melissa.tv Deckow-Crist
#20 Ervin Howell

Doloribus ad provident suscipit at

Qui consequuntur ducimus possimus quisquam amet similique suscipit porro ipsam amet eos veritatis officiis exercitationem vel fugit aut necessitatibus totam omnis rerum consequatur expedita quidem cumque explicabo

Shanna@melissa.tv Deckow-Crist
#21 Clementine Bauch

Asperiores ea ipsam voluptatibus modi minima quia sint

Repellat aliquid praesentium dolorem quo sed totam minus non itaque nihil labore molestiae sunt dolor eveniet hic recusandae veniam tempora et tenetur expedita sunt

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

Dolor sint quo a velit explicabo quia nam

Eos qui et ipsum ipsam suscipit aut sed omnis non odio expedita earum mollitia molestiae aut atque rem suscipit nam impedit esse

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

Maxime id vitae nihil numquam

Veritatis unde neque eligendi quae quod architecto quo neque vitae est illo sit tempora doloremque fugit quod et et vel beatae sequi ullam sed tenetur perspiciatis

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

Autem hic labore sunt dolores incidunt

Enim et ex nulla omnis voluptas quia qui voluptatem consequatur numquam aliquam sunt totam recusandae id dignissimos aut sed asperiores deserunt

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

Rem alias distinctio quo quis

Ullam consequatur ut omnis quis sit vel consequuntur ipsa eligendi ipsum molestiae et omnis error nostrum molestiae illo tempore quia et distinctio

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

Est et quae odit qui non

Similique esse doloribus nihil accusamus omnis dolorem fuga consequuntur reprehenderit fugit recusandae temporibus perspiciatis cum ut laudantium omnis aut molestiae vel vero

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

Quasi id et eos tenetur aut quo autem

Eum sed dolores ipsam sint possimus debitis occaecati debitis qui qui et ut placeat enim earum aut odit facilis consequatur suscipit necessitatibus rerum sed inventore temporibus consequatur

Nathan@yesenia.net Romaguera-Jacobson

Build your own data page

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

Back to demos