CakePHP3で静的ページの作成は webrootか pagesを使う。トップページを参考に解説
2019/02/24
CakePHP3で静的ページの作成は webrootか pagesを使う
CakePHP3で静的ページの作成には 2つの方法がある
CakePHP3で静的なページを作成したい場合は 2つの方法があります。
- /webroot フォルダを活用する
- /src/Controller/PagesController.php を活用する
この記事では、上記の 2つの方法について解説します。
/webroot フォルダを活用する
まず、/webroot フォルダを活用する方法です。
/webroot フォルダを活用する方法はシンプルです。
/webroot フォルダは、ドキュメントルートの場所になっていて、ブラウザでアクセスできる領域になっています。
そのため、静的なファイルをこの場所に入れれば、ブラウザでアクセスすることができます。
通常は、画像ファイルや CSSファイル、JavaScriptファイルなどを設置する場所として活用されます。
同様に、静的な HTMLファイルを設置すればそのままブラウザでアクセスすることができます。
例えば、デフォルトでは下記のファイルが入っています。
/webroot/img/cake.power.gif
これにアクセスする場合の URLは下記のようになります。
http://example.com/img/cake.power.gif
ファイルを置くだけでアクセスできますので、非常に簡単です。
/src/Controller/PagesController.php を活用する
/webroot フォルダを活用する方法は、シンプルで分かりやすい方法です。
ですが、静的なページといえども HTMLファイルとして設置するのではなく、CakePHPの中に組み込みたい、と思う場合もあるでしょう。
例えば、CakePHPのテンプレート機能を活用して、ヘッダーやフッターなどを共通で使用するパーツ化している場合などは、まさに CakePHPに組み込みたいと思う場面でしょう。
そんなときは、/src/Controller/PagesController.php を活用します。
デフォルトの PagesController.php ファイルは「display」というアクションしか入っていないシンプルなファイルです。
ですが、このアクションでは、受け取った URLに基づいてテンプレートファイルを取得し画面を表示する、という機能を持っています。
これによって、静的なページは下記の URLのように表示する事ができるようになっています。
http://example.com/pages/******
デフォルトのトップページを参考にした解説
CakePHPをインストールして最初に表示されるデフォルトのトップページもこの pagesを利用して表示されています。
トップページですので
http://example.com/
という URLで表示されますが、pagesを使って
http://example.com/pages/home
という URLでアクセスしても同様のページを表示することができます。
また、このデフォルトのトップページのテンプレートファイルは「/src/Template/Pages/home.ctp」です。
同様に、「/src/Template/」フォルダの中に「****.ctp」というファイルを作成し、
http://example.com/pages/****
という URLでアクセスすると、設置した「****.ctp」ファイルの内容が表示されます。
ルーティング機能を使って URLとプログラム実体とを関連付ける
また、「http://example.com/」という URLでアクセスした際、「http://example.com/pages/home」のページを表示させるようにする設定は「ルーティング」設定と呼ばれるものです。
CakePHP3・Cookbook・ルーティング
https://book.cakephp.org/3.0/ja/development/routing.html
この記事では詳細な解説はしませんので、上記のオフィシャルサイトなどを確認してほしいのですが、ルーティングの設定は「/config/routes.php」ファイルで行います。
デフォルトの設定では下記の記述があると思いますが、これが、ドキュメントルート「/」にアクセスがあった場合は「http://example.com/pages/home」のページを表示する、という設定をしているものになります。
1 |
$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']); |
これによって、ドキュメントルートのページが表示される、ということになっています。
pagesに関する追加の解説
前項のデフォルトのトップページを参考に解説したように、pages機能を利用して、静的なページを表示することができるようになります。
ですが、pages機能を利用してアクセスする場合は
http://example.com/pages/****
という URLになってしまいます。
ですが、これを
http://example.com/****
という URLでアクセスしたい場合もあるかと思いますが、その時は、先に解説したように、ルーティング機能を使って、URLとそれで利用するプログラムとを関連付けて望んでいる URLを設定することができるようになります。
今回は「静的なページを作るためのページとして pagesを利用する」という趣旨で記事を書いています。
ですが、pagesの利用は静的ページ専用というわけではありません。
正確には、データベースに接続せず、Controllerや Modelでの処理が必要がないページを表示する場合に使うのが pages、という感じのものです。
そのため、完全に静的なページだけではなく、テンプレートファイル側に記載するだけで済むような簡単な処理であれば pages機能を用いたページを作成するといいでしょう。
最後になってしまいましたが、ルーティングの設定は、基本的にはファイルの記載を変更すればすぐに反映されますが、環境によってはキャッシュされる場合もあるようです。
ルーティングの設定をしたけども、思ったような動きにならない、というときはキャッシュをクリアしてみるといいのではないか、と思います。
下記の記事を参考にしてください。
CakePHP3のルーティング(routes.php)の変更が反映されない時はキャッシュのクリアを
CakePHP3、CakePHP4のキャッシュをクリアする方法「bin/cake cache clear_all」を使う
CakePHP3の関連記事
CakePHP4のCSS、JavaScript、画像のブラウザへのキャッシュをコントロールするCakePHP3でレコードを保存(追加、更新、Insert、Update)する複数の方法を紹介
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法
CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も
CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
その他の「CakePHP3」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP3でテーブルにカラム(項目)を追加したときに変更するポイントのまとめ
CakePHP3でシステム開発をする際、途中でカラムを追加した場合に何を変更すればいいかを確認。カラムを追加する前後で Bakeした結果を比較し、変更になった点をリストアップした。
-
-
CakePHP3の画像、ファイルアップロードプラグインUpload Plugin 3.0の設置解説・その1
CakePHP3でファイル、画像をアップロードするプラグイン、upload plugin 3を導入する手順を解説した記事。3部作のその1で基本的な導入方法の解説で読みながら簡単に導入が可能。
-
-
CakePHP3でWarning Error: SplFileInfo::openFile()エラーが発生した場合の対処方法
CakePHP3のキャッシュファイルのパーミッションエラー Error: SplFileInfo::openFile()が発生した場合の対応方法解説。app.phpにキャッシュファイルのパーミッション設定を行い、既存のファイルは削除。
-
-
CakePHP 2.3 主キー(ID)以外のキーで更新方法 updateAll
主キー(ID)以外のカラムをキーとして更新する方法、updateAllの使い方をサンプルを用いて解説します。
-
-
CakePHP4のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説
CakeDC謹製Usersプラグインの紹介。ユーザ新規登録の流れを紹介しつつ、テンプレートファイル、設定情報ファイルの場所とそれらをカスタマイズする方法を説明します。
-
-
CakePHP3でDocumentRootやwebroot、imgフォルダのURLやドメイン、パスを取得
URLやドメイン、フォルダへのパスの取得は、ビューではUrlHelperを使い、コントローラーではRouterクラスを使います。第2引数の指定でURLを取得することも可能。
-
-
CakePHP3でQRコードを作成、表示するライブラリ「cakePHP-QR-Code-Helper」
CakePHPでQRコードを生成するライブラリ「cakePHP-QR-Code-Helper」の紹介。GDライブラリのインストールも必要ないHelperとして提供されているため、ファイルを設置すればすぐに使用可能。
-
-
CakePHP3で他のテーブルのマスタテーブルからセレクトボックス(プルダウンリスト)を作る
他のテーブルのマスタのレコードからプルダウンリストを作成し、選択できるようにするサンプルプログラムと解説。ORMの設定によりデータベースの値を取得し、配列を作成し optionsに与える。
-
-
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3でデフォルトのソート条件を設定しつつ画面上でユーザがソート条件を選択したときもソート処理を実行させる方法を解説。ソート条件はページネーションの処理として実装。
-
-
CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合
CakePHP3で開発環境と本番環境とで違う設定ファイルを読み込ませて環境ごとに定数を切り替える方法を解説。Apacheのhttpd.confに環境変数を設定し、それを読み込み判別する。