前提・実現したいこと
PHP(CakePHP)でブログ記事を作っています。PostControllerで記事を表示させようとしたところ、下のエラーが発生しました。また、学び始めたばかりということもあり、今回のエラー以外にもエラーが発生しています。これらを解決し、正常に操作できるようにしたいです。
一つ目のエラーに関して、関数がnullだと言われているので、その前のPostがnullなのではと思ったのですが、学びが浅く、Postがどこをさしているのか正確に分かりません。個人的には、Post/index.ctpを指しているのだと思います。なぜnullになるのか、どうすれば解決するのかをご教授いただきたいです。
二つ目のエラーに関して、下のModel/Post.phpのAppModelのところにエラーが出ており、Undefined type 'AppModel'と出ます。PostsControllerも同じようなエラーが出たのですが、namespaceを指定するとエラーが消えました。そのため、同じように名前空間を指定したのですが、同じようなエラーが出ます。これについては、階層によって指定先があるのではないかと思うのですが、 どこをどう指定すればよいのか分かりません。namespaceの名前は自由につけられるという記事も見る一方で、階層によるという記事も見かけます。どのようにして指定すればよいのかご教授いただきたいです。
発生している問題・エラーメッセージ
Call to a member function find() on null
Undefined type 'AppModel'.
該当のソースコード
cakePHP
1//Controller/PostsController 2<?php 3 //namespace App\Controller; 4class PostsController extends AppController { 5 public $helpers = array('Html', 'Form'); 6 7 public function index() { 8 $this->set('posts', $this->Post->find('all')); 9 } 10}
PHP
1//Model/Post.php 2<?php 3//namespace App\Model; 4class Post extends AppModel { 5 6}
PHP
1//View/Post/index.ctp 2<h2>記事一覧</h2> 3 4<ul> 5 <?php foreach ($posts as $post) :?> 6 <li></li> 7 <?php endforeach; ?> 8</ul>
試したこと
ある動画教材で学習しています。この教材は指定されたものなのですが、この動画教材のCakePHPのバージョンはCakePHP2で、現在の環境はCakePHP4です。そのため、バージョンが変わる際に何が異なるのかを調べましたが、今回の問題とは特に関連がなさそうでした。2から4に移行したことで、ctpから.phpに変わったという記事も見かけましたが、index.phpに変更してみても特に変化はありませんでした。namespaceについては、エラーが出るため、自分で付け足したもので、実際の教材では何も書いていませんでした。
補足情報(FW/ツールのバージョンなど)
PHP 8.08
CakePHP 4.1
xamppを使用しています。