PHP

CakePHP4.Xで特定のページ表示

CakePHP4.Xで特定のページ表示と書かれた画像

環境:MAMP

MySQL:5.7.26

PHP:7.3.9

cakephp:4.0.4

 

環境構築から一緒に揃えたい方はこっちを参考にしてみてください。

>>MAMP環境下でcomposerを使ってcakephpを導入する手順

 

Controller追加

 

<?php

namespace App\Controller;

class ArticlesController extends AppController
{
    public function index()
    {
        $this->loadComponent('Paginator');
        $articles = $this->Paginator->paginate($this->Articles->find());
        $this->set(compact('articles'));
    }
}

 

上記の内容で src/Controller/ArticlesController.phpとなるようにArticlesController.phpを追加。

 

compactに関してはこちらを参考に理解してください。

$arr = array(
  'apple' => $apple,
  'orange' => $orange,
  'lemon' => $lemon,
);
// ↑
// 同じ意味
// ↓
$arr = compact('apple', 'orange', 'lemon');

 

Viewを追加

 

<h1>記事一覧</h1>
<table>
    <tr>
        <th>タイトル</th>
        <th>作成日時</th>
    </tr>

    <!-- ここで、$articles クエリーオブジェクトを繰り返して、記事の情報を出力します -->

    <?php foreach ($articles as $article): ?>
    <tr>
        <td>
            <?= $this->Html->link($article->title, ['action' => 'view', $article->slug]) ?>
        </td>
        <td>
            <?= $article->created->format(DATE_RFC850) ?>
        </td>
    </tr>
    <?php endforeach; ?>
</table>

 

公式にはsrc/Template/Articles/index.ctpとなるようにと書いてあるけどうまくいきません。

src/templates/Articles/index.phpでうまくいきます。

ファイルを追加したらhttp://localhost:8888/articles/indexにアクセスしましょう。

 

階層的にはこうなっています。

-PHP

© 2021 エンジニアてんし君ブログ