CAKEPHP3でHelloWorldを表示
環境
ubuntu 16.04
PHP 7.0.22
CAKEPHP 3.5.6
Apache/2.4.18
実施内容
今回はController側で「HelloController.php」を作成 View側では「Hello」ディレクトリと「index.ctp」ファイルを作成する
実施
各種ファイル作成
src/Controller/HelloController.phpを作成
<?php class HelloController extends AppController{ function index() { $data = 'Hello world!'; $this->set('data', $data); } } ?>
ついでにViewのディレクトリとファイルも作っておく
$ mkdir src/View/Hello $ vim src/View/Hello/index.ctp
index.ctpの中身は下記の通り
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> </head> <body> <h1> <?php echo $data ?> </h1> </body> </html>
Controllerエラー
ブラウザで/helloにアクセスすると下記のようなエラーが出た
2017-11-29 01:23:07 Error: [Cake\Error\FatalErrorException] Class 'AppController' not found in /var/www/html/comporser/CAKEPHPTEST/src/Controller/HelloController.php on line 2
AppControllerが見つからないよって言われてる
調べてみると名前空間の宣言がいるらしい
Controllerの同ディレクトリに初期から入っている「PagesController.php」をのぞいてみる
<?php ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ namespace App\Controller; use Cake\Core\Configure; use Cake\Network\Exception\ForbiddenException; use Cake\Network\Exception\NotFoundException; use Cake\View\Exception\MissingTemplateException; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class PagesController extends AppController { } ?>
namespace を使って宣言してるしこれが正規手順っぽいのでならって再度編集してみる
<?php namespace App\Controller; class HelloController extends AppController{ function index() { $data = 'Hello world!'; $this->set('data', $data); } } ?>
Templateエラー
再度アクセスしてみると下記のようなエラーになった
2017-11-29 02:15:31 Error: [Cake\View\Exception\MissingTemplateException] Template file "Hello/index.ctp" is missing. Exception Attributes: array ( 'file' => 'Hello/index.ctp', )
テンプレートがないよって言われている
なにそれ・・・
調べてみると ビューは「ビューの処理を行う部分」と「表示するテンプレート」 に分かれたらしい。
なので、現在Viewに入ってるHelloディレクトリをまとめて「src/Template」配下に移動させると・・・
表示される・・・
色々弄ったから現在のディレクトリ構成を記載(必要なものだけ)
src/ ├── Application.php ├── Controller │ ├── AppController.php │ └── HelloController.php ├── Template │ └── Hello │ └── index.ctp └── View └── Hello
さすがにView使ってないしこれだと味気ないので次回はView処理を交えてやる