CakePHPのコントローラーとビューを使ってページを表示してみます。
ページの表示
/test/indexにアクセスしたときに、ページが表示されるようにしてみます。
まずはコントローラーをsrc\Controller内に作成します。
src\Controller\TestController.php
<?php namespace App\Controller; class TestController extends AppController { public function index() { } }
今回は/test/indexにアクセスしたときに表示するので、TestControllerのindexメソッドを作成しています。
次にビューを作成します。
src\Template内にTestディレクトリを作成して、その中にindex.ctpを作成します。
src\Template\Test\index.ctp
<h1>Hello World!!</h1>
http://localhost:8765/test/indexにアクセスして、以下のように表示が確認できました。
/indexの場合は省略して、http://localhost:8765/testでアクセスすることもできます。
レイアウトの変更
デフォルトではsrc\Template\Layout\default.ctpがレイアウトに使われているので、レイアウトを新しく作成してみます。
src\Template\Layout\test-layout.ctp
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>test</title> </head> <body> <?= $this->fetch('content') ?> </body> </html>
<?= $this->fetch(‘content’) ?>部分にビューが表示されます。
作成したレイアウトが適用されるようにコントローラーを修正します。
src\Controller\TestController.php
<?php namespace App\Controller; class TestController extends AppController { public function index() { $this->viewBuilder()->layout('test-layout'); } }
ブラウザで確認すると、レイアウトが変更されているのが確認できました。
変数の設定
コントローラーで設定した変数をビューやレイアウトで使用してみます。
src\Controller\TestController.php
<?php namespace App\Controller; class TestController extends AppController { public function index() { $this->set('text', 'Hello!!'); $this->viewBuilder()->layout('test-layout'); } }
コントローラーで設定した変数をビューやレイアウトで表示できるように修正してみます。
src\Template\Test\index.ctp
<h1><?= $text ?></h1>
src\Template\Layout\test-layout.ctp
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title><?= $text ?></title> </head> <body> <?= $this->fetch('content') ?> </body> </html>
ブラウザで確認すると、ビューとレイアウトで表示されているのが確認できました。
【参考サイト】
コメントが承認されるまで時間がかかります。