CakePHP3で単一ページを作る方法

CakePHP3CakePHP3


Warning: Undefined variable $content in /home/c9099599/public_html/dstrikes.net/wp-content/themes/cocoon-child-master/tmp/content.php on line 76
この記事は 約5 分で読めます。

CakePHPは色々出来て便利ですね。
チュートリアルを一通り見てDBが便利に使えたりするのは分かったけども、静的ページを作りたい時ってどうするの?
と言う初歩的な疑問にぶち当たったので作ってみました。

CakePHP3で静的ページを作る方法

と言うわけで早速CakePHPの単一ページを作って見たいと思います。

まずはアクセスさせたいURLを考えます。
例えば
・http://localhost/test/
でアクセスした時のページを生成したい場合。

まず思い浮かぶのがTestController.phpですよね。
正解!普通に src/Controller/TestController.phpを新規制作して以下を記述します。

<?php
namespace App\Controller;

use App\Controller\AppController;

class TestController extends AppController
{

public function index()
{
$this->set('teststr','Hello World');
}

}

public function index()http://localhost/test/にアクセスがあった時の初期で開くと言う意味です。
$this->set(‘teststr’,’Hello World’)src/template/test/index.ctp のファイルで $teststrechoすると表示される文字列です。
ここに取得してきた変数を設定するとそれが表示されると言う物です。

そして次にレイアウトの指定を追加します。

public function initialize()
{
//testレイアウトを指定
$this->viewBuilder()->layout('test');
}

これでデフォルトレイアウトが指定されました。

そして完成するファイルがこれです。 src/Controller/TestController.php

<?php
namespace App\Controller;

use App\Controller\AppController;

class TestController extends AppController
{
public function initialize()
{
//testレイアウトを指定
$this->viewBuilder()->layout('test');
}
public function index()
{
$this->set('teststr','Hello World');
}

}

合体するとこうなります。

Layout/test.ctp の指定をしたので src/template/layout/test.ctp を制作します。

<!DOCTYPE html>
<html lang="ja">
<body>
	<head>
	<?= $this->Html->charset() ?>
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>
	</title>
	<?= $this->Html->meta('icon') ?>
	<?= $this->Html->css('test.css') ?>
	<?= $this->Html->script('test.js') ?>
</head>
<body>
	<?= $this->fetch('content') ?>
</body>
</body>
</html>

はい これが指定レイアウトです。

さてここまで出来たら後はCSSとかJSを読み込みフォルダに設置すれば完成です。
ICONやCSSやJSの設置先はWebrootフォルダの CSS JSのそれぞれに設置します。

<?= $this->fetch('content') ?>

この部分がTemplate.ctpに記載されたものが表示される仕組みになっています。
Layout.ctpには必ず上記を入れないと静的なコードしか表示されません

PHPフレームワーク CakePHP 3入門

掌田 津耶乃 秀和システム 2017-01-14
売り上げランキング : 188707

by ヨメレバ